2011-12-14 8 views
2

は、私は私のヘッダファイルのいずれかで次のサンプルコードを持っている:いつ、どこで_DEBUGが定義されていますか?

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

-DDEBUGオプションでのgccコンパイラを使ってコンパイルされ、このヘッダファイルを含むアプリケーション。

質問:

_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の正確な内容を参照してください。

関連する問題