DEBUG与_DEBUG的区别

9
在Visual Studio 2008的vc++中,DEBUG和_DEBUG之间有什么区别?因为在我的项目中,一些模块的预处理器是DEBUG,而另一些模块则是_DEBUG。

相关:_DEBUGNDEBUG - Afriza N. Arief
3个回答

6

在您自己的代码中,您可以检查任何宏,因此使用哪个宏并不重要。

但是您使用的库可能会有所不同。例如,关于assert的MSDN文档说明:

只有在定义了_DEBUG时,断言语句才会编译。当未定义_DEBUG时,编译器将把断言视为空语句。

因此,我建议始终使用_DEBUG

编辑:根据MSDN的说明,您甚至不必定义任何特殊的调试宏,因为一旦指定了调试运行时库,编译器就会为您执行此操作。


2

实际上这取决于宏定义的使用。据我所知,VS2008 C++默认项目包含_DEBUG用于调试配置。你的项目中可能也定义了自定义DEBUG宏。尝试搜索DEBUG定义。

默认情况下,您应该始终使用_DEBUG。


1
如果项目的Codegeneration设置带有"debug",则编译器会定义_DEBUG宏。相应的编译器选项为/MDd(多线程动态链接到libc库,DEBUG)、/MLd(单线程静态链接到libc库,DEBUG,VC6)、/MTd(多线程静态链接到libc库,DEBUG)。
编译器选项/LDd也会定义_DEBUG宏。
在Debug-Project-Setting中通常会明确定义DEBUG宏。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接