web-dev-qa-db-ja.com

Cマクロ:#if等しいかどうかをチェック

マクロの数値が等しいかどうかをチェックする方法はありますか?

私は何かしたいです

#define choice 3

#if choice == 3
  ....
#endif

#if choice == 4
 ...
#endif

Cマクロはこのようなものをサポートしていますか?

27
anon

確かにそれはうまくいくはずです。 http://gcc.gnu.org/onlinedocs/cpp/If.html#If を参照してください

その参照は正確ですが、「標準形式」で書かれています。抽象的な例はありません。

25
wallyk

コードを記述するもう1つの方法は、チェーンされた#Elifディレクティブを使用することです。

#if choice == 3
  ...
#Elif choice == 4
  ...
#else
  #error Unsupported choice setting
#endif

choice#definedではない場合、コンパイラー(プリプロセッサー)はそれを0の値を持つものとして扱います。

29
David R Tribble

私が知る限り、それはうまくいくはずです。どのコンパイラを使用していますか?

PS:参考までに、定義名は通常大文字で書かれています!

#define CHOICE 3

5