7

のようなステートメントを使用すると#if TRUE、何が起こると予想されますか? 説明をいただければ幸いです。仕組みは理解していますが、私のコードでは を使用し#if 1た場合とはまったく異なる結果が得られ#if TRUEます。#ifは条件付きディレクティブであり、それが意味することを理解しています。私が理解していないのはTRUE(または)部分だけです。FALSEこのように使用すると、ステートメントに続くコードが実行されないように見えます。次に例を示します。

#if TRUE
     cout << "true" << endl;
#endif

#if FALSE
     cout << "false" << endl;
#endif

「true」または「false」が画面に表示されないようで、Visual Studio を使用すると、内側のステートメントが自動的にグレー表示されます。

4

4 に答える 4

9

プリプロセッサは、 true または false に評価された#if #endif後の式に応じて、ブロックの内容を含めたり除外したりします。#if

#if TRUE場合にのみ true と評価されます

  • マクロTRUEが定義されている
  • TRUE!= 0の値

あなたの例ではどちらTRUEFALSE定義されていないため、両方のブロックがfalseで除外されています。

于 2012-06-13T13:33:14.073 に答える
5

TRUEFALSEはWindows のマクロですが、 で宣言されていWinDef.hます。

ヘッダーを含めると、TRUEis1FALSEis が表示されます0。したがって、最初のステートメントは実行する必要がありますが、2 番目のステートメントは実行しないでください。

ヘッダーを含めないと、両方が未定義になり、どちらのステートメントも実行されません。

于 2012-06-13T13:31:49.120 に答える
1

表示trueまたはfalse印刷するには、それらを定義する必要があります。

#define TRUE 1
#define FALSE 1

#if TRUE#if FALSEは と同じになります#if 1

于 2012-06-13T13:29:56.373 に答える