【问题标题】:When and where is _DEBUG defined?_DEBUG 何时何地定义?
【发布时间】:2011-12-14 05:28:00
【问题描述】:

我的一个头文件中有以下示例代码:

#ifdef _DEBUG
#define _DEBUG_NEW_REDEFINE_NEW 0
#include "debug_new.h"
#else
#define DEBUG_NEW new
#endif

包含此头文件的应用程序是使用带有-DDEBUG 选项的 gcc 编译器编译的。

问题:

是否因为-DDEBUG 选项而定义了_DEBUG

【问题讨论】:

    标签: debugging gcc c-preprocessor compiler-options


    【解决方案1】:

    -DDEBUG 只会定义DEBUG,而不是_DEBUG。要弄清楚为什么(或是否)_DEBUG 被定义,请尝试构建包含该标头的源文件

    gcc --other_options source_file.cc -E -dD -o source_file.ii
    

    (您可能必须在命令行中删除另一个 -o 标志。)然后 source_file.ii 将为每个已定义的宏包含 #define 行,并且每次都包含 # <lineno> <header> 行它会更改头文件。

    您可以阅读http://gcc.gnu.org/onlinedocs/gcc-4.6.2/gcc/Preprocessor-Options.html#index-dD-946 以了解-dD 的确切作用。

    【讨论】:

      猜你喜欢
      • 2023-03-15
      • 1970-01-01
      • 2011-06-19
      • 1970-01-01
      • 2011-01-18
      • 1970-01-01
      • 2010-11-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多