何时何地定义_DEBUG?

时间:2011-12-14 05:28:01

标签: debugging gcc c-preprocessor compiler-options

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

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

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

问题:

_DEBUG选项是否定义了-DDEBUG

1 个答案:

答案 0 :(得分:3)

-DDEBUG只会定义DEBUG,而不是_DEBUG。要弄清楚为什么(或者如果)_DEBUG被定义,请尝试使用

构建包含该标头的源文件
gcc --other_options source_file.cc -E -dD -o source_file.ii

(您可能必须在命令行中删除另一个-o标志。)然后 source_file .ii将包含已定义的每个宏的#define行,并{{1}每次更改头文件时都行。

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