_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 何时何地定义?的主要内容,如果未能解决你的问题,请参考以下文章

为 Qt 注册自定义类型时,何时、何地以及为何使用命名空间

何时何地根据实际宽度更新 UITableViewCell 子视图的约束

2019年10月26日 复习

我应该在何时何地将值存储在 BLoC 本身或其状态中

分裂何时何地发生?

何时何地使用 JMS?