_DEBUG 何时何地定义?
Posted
技术标签:
【中文标题】_DEBUG 何时何地定义?【英文标题】:When and where is _DEBUG defined? 【发布时间】:2011-12-14 05:28:00 【问题描述】:我的一个头文件中有以下示例代码:
#ifdef _DEBUG
#define _DEBUG_NEW_REDEFINE_NEW 0
#include "debug_new.h"
#else
#define DEBUG_NEW new
#endif
包含此头文件的应用程序是使用带有-DDEBUG
选项的 gcc 编译器编译的。
问题:
是否因为-DDEBUG
选项而定义了_DEBUG
?
【问题讨论】:
【参考方案1】:-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
的确切作用。
【讨论】:
以上是关于_DEBUG 何时何地定义?的主要内容,如果未能解决你的问题,请参考以下文章