debugging - _DEBUG 何时何地定义?

标签 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 选项定义的吗?

最佳答案

-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/

相关文章:

debugging - 那里有任何 flex ("Fast LEXical analyzer") 调试器吗?

c++ - 优化器何时可以组合对成员函数的调用?

c++ - 我对 Include Guards 有一些困惑

c++ - 区分两个值相等、名称不同的枚举值

visual-studio - 为什么在 VS2010 中关闭 Just My Code 后无法附加到 w3wp.exe 进程?

c - 使用 makefile 将目标文件放入新目录时遇到问题

c - 生成函数和全局变量

c++ - 我可以在 #define 函数中使用 Visual Studio 调试器吗?

debugging - 如何在 ThinkOrSwim 平台中单步执行 thinkscript?

java - Weblogic集群环境下如何设置远程调试?