调试与_DEBUG

发布于 2024-12-08 17:57:37 字数 108 浏览 0 评论 0原文

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

凯凯我们等你回来 2024-12-15 17:57:37

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

但您使用的库的行为可能有所不同。例如,关于 assert 的 MSDN 文档指出:

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

所以我建议始终使用_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:

Assertion statements compile only when _DEBUG is defined. When _DEBUG is not defined, the compiler treats assertions as null statements.

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.

电影里的梦 2024-12-15 17:57:37

这实际上取决于定义的宏用途。据我所知,默认的 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.

弃爱 2024-12-15 17:57:37

如果项目的代码生成设置是带有“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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文