2011-10-10 87 views
8

是什么调试和_DEBUG之间在VC++在Visual Studio 2008.Is那里,因为在我的项目有什么区别区别,在某些模块预处理程序调试和在某些模块是_DEBUG。DEBUG VS _DEBUG

+0

相关:['_DEBUG' VS'NDEBUG'](http://stackoverflow.com/questions/2290509/) –

回答

5

在自己的代码,你可以检查任何你想要的宏,所以也无所谓使用哪一个。

但您使用的库可能会有所不同。例如。有关assert状态的MSDN文档:

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

所以我建议总是使用_DEBUG

编辑:根据MSDN你甚至不定义任何特殊的调试宏,因为当你指定调试运行时库编译器会为您尽快做到这一点。

2

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

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

1

如果项目的Codegeneration设定与“调试”什么,所以_DEBUG宏是由编译器定义。 相应的编译选项是 /MDD多线程的DLL,动态链接到libc,DEBUG /MLD单线程的,静态链接到libc,DEBUG(VC6) /MTD多线程,静态链接到libc,DEBUG

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

的DEBUG宏往往是明确的调试项目设定定义。