Visual Studio 2008中的vc ++中DEBUG和_DEBUG有什么区别。这有什么不同,因为在我的项目中,在某些模块中,预处理器是DEBUG,在某些模块中它是_DEBUG。
答案 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中明确定义。