3

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

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

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

问题:

_DEBUG因为-DDEBUG选项而定义的吗?

4

1 回答 1

4

-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操作。

于 2011-12-14T05:57:40.117 回答