2011-12-14 127 views
2

我有我的頭文件中的一個下面的示例代碼:_DEBUG何時何地被定義?

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

,其中包括這個頭文件使用gcc編譯器與-DDEBUG選項編譯應用程序。

問:

_DEBUG是因爲-DDEBUG選項的定義?

回答

3

-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的確切含義。

相關問題