DEBUG vs _DEBUG

时间:2011-10-10 06:56:15

标签: visual-studio-2008 visual-c++

Visual Studio 2008中的vc ++中DEBUG和_DEBUG有什么区别。这有什么不同,因为在我的项目中,在某些模块中,预处理器是DEBUG,在某些模块中它是_DEBUG。

3 个答案:

答案 0 :(得分:5)

在您自己的代码中,您可以检查您想要的任何宏,因此使用哪个宏无关紧要。

但您使用的库可能表现不同。例如。有关assert州的MSDN文档:

  

断言语句仅在定义了_DEBUG时编译。如果未定义_DEBUG,编译器会将断言视为空语句。

所以我建议总是使用_DEBUG

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

答案 1 :(得分:2)

它实际上取决于定义的宏用途。据我所知,默认VS2008 C ++项目包含要为调试配置定义的_DEBUG。可能会发生在您的项目中也定义了自定义DEBUG宏。尝试搜索DEBUG定义。

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

答案 2 :(得分:1)

如果项目的Codegeneration设置是" debug",那么_DEBUG宏是由编译器定义的。 相应的编译器选项是     / MDd多线程DLL,与libc,DEBUG的动态链接     / MLd单线程,静态链接到libc,DEBUG(VC6)     / MTd多线程,静态链接到libc,DEBUG

编译器选项/ LDd也定义了_DEBUG宏。

DEBUG宏通常在Debug-Project-Setting中明确定义。