2011-07-14 11 views
4

これはおそらく愚かな質問ですが、私のコードでこれらのデバッグメッセージを有効にするにはどうしたらいいですか?C: `デバッグメッセージを有効にする

#ifdef DEBUG_MSG 
    printf("initial state : %d\n", initial_state); 
#endif 

事前に多くの感謝を、

+0

#define 'DEBUG_MSG'が必要です。あなたのコンパイラは何ですか? –

+2

愚かな質問はありません。さて、そこに_are、_しかし、これはそれらの1つではありません:-) – paxdiablo

+0

Intel iccはコンパイラ – Eamorr

答えて

4

#ifdefを意味し、あなたのコードは、本質的にDEBUG_MSGが定義されているかどうかを確認するために、プリプロセッサに指示しますどこか別の場所。表示されている場合は、表示したコードが含まれます。

+0

ええ、私がしなければならなかったのは、 '#define DEBUG_MSG 1' ...という設定でした。私はCノブだと言うことができます。 – Eamorr

+0

実際には' 1'を省略することができます。拡張自体はまったく重要ではありません。 – David

9

コンパイルした場合、このような何かしてみてください:「が定義されている場合」

$ gcc -DDEBUG_MSG -o foo foo.c 
+2

+1、これは '#define'を追加するためにコード自体を修正する必要がないことを意味します。 –

1

#ifdefDEBUG_MSGが定義されている場合にのみマクロが展開されます。あなたは2つの方法でこれを行うことができます。あなたの元に#define DEBUG_MSG 1を行うか-DDEBUG_MSGを使用してコンパイル(gccを使用している場合、他のコンパイラのための同様のフラグがあまりにもあります)

8

あなたは何とかその#defineしなければならないのどちらか。

0.あなたのコードで。コマンドラインで

#define DEBUG_MSG 

1:あなたがそのフラグを使用して、どこか前に、あなたのコード内で直接

。 sourcefileのそれぞれについて、または適切メイクファイルに

gcc -DDEBUG_MSG main.c 

(GCCについて、フラグが-D<macro-name>で、MSVCのために、それに応じて、ICCのは前者の一つである、/Dありますあなたのオペレーティングシステム。)

2. IDEのどこかで。

IDEのプロジェクト設定では、どこに定義を入れることができるのかを確認します。これは、1を使用して行われます。

+0

私はこの回答に投票したいと思っていましたが、質問に[c]というタグが付き、 'g ++ 'を使用しました。 – JeremyP

+0

どうしたらいいですか、ここで最も完全な答えですので、コンパイラを修正して投票しました。 – JeremyP

+0

母、ありがとう、私の間違いのために恩赦を。 –

2

Cプリプロセッサフ​​ェーズでは、シンボルが定義されていれば#ifdef/#endifのコードをコンパイラ段階に渡します。

これは一般に(少なくとも)2つの方法で実行できます。

最初のようなコンパイラのコマンドラインスイッチを使用することである。

gcc -DDEBUG_MSG myprog.c 

-Dこれは実装固有の、多くのコンパイラの使用であるが、以下のプリプロセッサシンボルを定義することを意味します同じスイッチ)。どこか#ifdef前に、あなたの実際のソースコード内

#define DEBUG_MSG 

:第二のような行を配置することです。

ソースコードを変更せずにその動作を制御できるため、たとえば、同じソースコードから生成されたデバッグおよびリリースビルドを持つことができるため、前者の方が一般的です。

関連する問題