3

ヘッダーファイルの1つに次のサンプルコードがあります。

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

このヘッダーファイルを含むアプリケーションは、-DDEBUGオプション付きのgccコンパイラを使用してコンパイルされます。

質問:

オプション_DEBUGのために定義されていますか?-DDEBUG

4

1 に答える 1

4

-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

于 2011-12-14T05:57:40.117 に答える