何时何地定义了 _DEBUG?

3

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

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

这个头文件包含的应用程序使用gcc编译器和-DDEBUG选项进行编译。
问题: _DEBUG是否由-DDEBUG选项定义?
1个回答

5

-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的确切含义。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接