我的一个头文件中有以下示例代码:
#ifdef _DEBUG
#define _DEBUG_NEW_REDEFINE_NEW 0
#include "debug_new.h"
#else
#define DEBUG_NEW new
#endif
包含此头文件的应用程序是使用带有 -DDEBUG
选项的 gcc 编译器编译的。
问题:
_DEBUG
是因为 -DDEBUG
选项定义的吗?
最佳答案
-DDEBUG
只会定义 DEBUG
, 不是 _DEBUG
.找出原因(或如果)_DEBUG
正在定义,尝试构建包含该 header 的源文件
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
关于debugging - _DEBUG 何时何地定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8499854/