これはおそらく愚かな質問ですが、私のコードでこれらのデバッグメッセージを有効にするにはどうしたらいいですか?C: `デバッグメッセージを有効にする
#ifdef DEBUG_MSG
printf("initial state : %d\n", initial_state);
#endif
事前に多くの感謝を、
これはおそらく愚かな質問ですが、私のコードでこれらのデバッグメッセージを有効にするにはどうしたらいいですか?C: `デバッグメッセージを有効にする
#ifdef DEBUG_MSG
printf("initial state : %d\n", initial_state);
#endif
事前に多くの感謝を、
コンパイルした場合、このような何かしてみてください:「が定義されている場合」
$ gcc -DDEBUG_MSG -o foo foo.c
+1、これは '#define'を追加するためにコード自体を修正する必要がないことを意味します。 –
#ifdef
DEBUG_MSG
が定義されている場合にのみマクロが展開されます。あなたは2つの方法でこれを行うことができます。あなたの元に#define DEBUG_MSG 1
を行うか-DDEBUG_MSG
を使用してコンパイル(gcc
を使用している場合、他のコンパイラのための同様のフラグがあまりにもあります)
あなたは何とかその#define
しなければならないのどちらか。
0.あなたのコードで。コマンドラインで
#define DEBUG_MSG
1:あなたがそのフラグを使用して、どこか前に、あなたのコード内で直接
。 sourcefileのそれぞれについて、または適切メイクファイルに
:
gcc -DDEBUG_MSG main.c
(GCCについて、フラグが-D<macro-name>
で、MSVCのために、それに応じて、ICCのは前者の一つである、/D
ありますあなたのオペレーティングシステム。)
2. IDEのどこかで。
IDEのプロジェクト設定では、どこに定義を入れることができるのかを確認します。これは、1を使用して行われます。
Cプリプロセッサフェーズでは、シンボルが定義されていれば#ifdef/#endif
のコードをコンパイラ段階に渡します。
これは一般に(少なくとも)2つの方法で実行できます。
最初のようなコンパイラのコマンドラインスイッチを使用することである。
gcc -DDEBUG_MSG myprog.c
(-D
これは実装固有の、多くのコンパイラの使用であるが、以下のプリプロセッサシンボルを定義することを意味します同じスイッチ)。どこか#ifdef
前に、あなたの実際のソースコード内
#define DEBUG_MSG
:第二のような行を配置することです。
ソースコードを変更せずにその動作を制御できるため、たとえば、同じソースコードから生成されたデバッグおよびリリースビルドを持つことができるため、前者の方が一般的です。
#define 'DEBUG_MSG'が必要です。あなたのコンパイラは何ですか? –
愚かな質問はありません。さて、そこに_are、_しかし、これはそれらの1つではありません:-) – paxdiablo
Intel iccはコンパイラ – Eamorr