【问题标题】:DEBUG vs _DEBUG调试与 _DEBUG
【发布时间】:2011-10-10 06:56:15
【问题描述】:

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

【问题讨论】:

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


【解决方案1】:

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

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

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

所以我建议始终使用_DEBUG

编辑:根据MSDN,您甚至不必定义任何特殊的调试宏,因为一旦您指定了调试运行时库,编译器就会为您完成。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      如果项目的Codegeneration-setting是任何带有“debug”的东西,那么_DEBUG宏是由编译器定义的。 相应的编译器选项是 /MDd 多线程 DLL,动态链接到 libc,调试 /MLd 与 libc、DEBUG (VC6) 的单线程静态链接 /MTd 多线程、静态链接到 libc、DEBUG

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

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

      【讨论】:

        猜你喜欢
        • 2011-01-18
        • 2015-05-29
        • 1970-01-01
        • 2013-02-06
        • 1970-01-01
        • 1970-01-01
        • 2023-03-15
        • 2011-04-16
        • 1970-01-01
        相关资源
        最近更新 更多