ヘッダーファイルの1つに次のサンプルコードがあります。
#ifdef _DEBUG
#define _DEBUG_NEW_REDEFINE_NEW 0
#include "debug_new.h"
#else
#define DEBUG_NEW new
#endif
このヘッダーファイルを含むアプリケーションは、-DDEBUG
オプション付きのgccコンパイラを使用してコンパイルされます。
質問:
オプション_DEBUG
のために定義されていますか?-DDEBUG
ヘッダーファイルの1つに次のサンプルコードがあります。
#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
定義されているかどうか)を理解するには、そのヘッダーを含むソースファイルを次のように作成してみてください。
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
。