应使用哪个预处理器定义来指定代码的调试部分?
使用#ifdef _DEBUG
或者#ifndef NDEBUG
或者有更好的方法来做到这一点,例如#define MY_DEBUG
?
我认为_DEBUG
是 Visual Studio 特定的,NDEBUG 是标准的吗?
答案
Visual Studio 定义_DEBUG
当您指定/MTd
或者/MDd
选项,NDEBUG
禁用标准 C 断言。_DEBUG
如果你希望你的调试代码与MS CRT 调试技术和NDEBUG
如果你想保持一致assert()
。
如果您定义自己的调试宏(并且不会破解编译器或 C 运行时),请避免以下划线开头的名称,因为它们是保留的。