我在一个头文件中有以下示例代码:
#ifdef _DEBUG
#define _DEBUG_NEW_REDEFINE_NEW 0
#include "debug_new.h"
#else
#define DEBUG_NEW new
#endif
这个头文件包含的应用程序使用gcc编译器和
-DDEBUG
选项进行编译。问题:
_DEBUG
是否由-DDEBUG
选项定义?我在一个头文件中有以下示例代码:
#ifdef _DEBUG
#define _DEBUG_NEW_REDEFINE_NEW 0
#include "debug_new.h"
#else
#define DEBUG_NEW new
#endif
-DDEBUG
选项进行编译。_DEBUG
是否由-DDEBUG
选项定义?-DDEBUG
只会定义 DEBUG
,而不是 _DEBUG
。要找出为什么(或是否)已经定义了 _DEBUG
,请尝试使用以下命令构建包含该头文件的源文件:
gcc --other_options source_file.cc -E -dD -o source_file.ii
-o
标志。) 然后source_file.ii将包括为每个宏定义的#define行,以及每次更改头文件时的#<lineno><header>
行。-dD
的确切含义。