调试与_DEBUG
Visual Studio 2008 中的 vc++ 中的 DEBUG 和 _DEBUG 有什么区别。有什么区别吗,因为在我的项目中,在某些模块预处理器中是 DEBUG,在某些模块中它是 _DEBUG。
What is the difference between DEBUG and _DEBUG in vc++ in visual studio 2008.Is there any difference because in In my project,in some module preprocessor is DEBUG and in some module it is _DEBUG.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在您自己的代码中,您可以检查所需的任何宏,因此使用哪一个并不重要。
但您使用的库的行为可能有所不同。例如,关于
assert
的 MSDN 文档指出:所以我建议始终使用
_DEBUG
。编辑:根据MSDN,您不甚至必须定义任何特殊的调试宏,因为只要您指定调试运行时库,编译器就会为您完成此操作。
In your own code you can check for any macro you want, so it doesn't matter which one to use.
But the libraries you use may behave different. E.g. the MSDN documentation about
assert
states:So I would suggest to always use
_DEBUG
.Edit: According to MSDN you do not even have to define any special debug macro because the compiler will do it for you as soon as you specify a debug runtime library.
这实际上取决于定义的宏用途。据我所知,默认的 VS2008 C++ 项目包含为调试配置定义的 _DEBUG。您的项目中可能还定义了自定义 DEBUG 宏。尝试搜索 DEBUG 定义。
默认情况下,您应该始终使用_DEBUG。
It actually depends what macro use defined. As I know default VS2008 C++ project contains _DEBUG to be defined for debug configuration. It might happen that in your project there is custom DEBUG macro defined as well. Try to search for DEBUG definition.
By default you should always use _DEBUG.
如果项目的代码生成设置是带有“debug”的内容,则 _DEBUG 宏由编译器定义。
对应的编译选项是
/MDd 多线程 DLL,动态链接到 libc,DEBUG
/MLd 单线程,静态链接到 libc,DEBUG (VC6)
/MTd 多线程,静态链接到 libc,DEBUG
编译器选项 /LDd 也定义 _DEBUG 宏。
DEBUG 宏通常在 Debug-Project-Setting 中显式定义。
If the Codegeneration-setting of the project is anything with "debug", so the _DEBUG Macro is defined by the compiler.
The corresponding compiler options are
/MDd Multithreaded DLL, dynamic linkage to libc, DEBUG
/MLd Single-Threaded, static linkage to libc, DEBUG (VC6)
/MTd Multithreaded, static linkage to libc, DEBUG
The compiler option /LDd defines the _DEBUG Macro, too.
The DEBUG Macro is often explicitly defined in the Debug-Project-Setting.