C宏:#if检查是否相等

ano*_*non 24 c macros if-statement

有没有办法检查宏中的数字相等性?

我想做点什么

#define choice 3

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

#if choice == 4
 ...
#endif
Run Code Online (Sandbox Code Playgroud)

C宏是否支持这样的事情?

Dav*_*ble 29

编写代码的另一种方法是使用链式#elif指令:

#if choice == 3
  ...
#elif choice == 4
  ...
#else
  #error Unsupported choice setting
#endif
Run Code Online (Sandbox Code Playgroud)

请注意,如果choice不是#defined,编译器(预处理器)会将其视为具有该值0.


wal*_*lyk 25

确实应该有效.见 http://gcc.gnu.org/onlinedocs/cpp/If.html#If

该引用是准确的,但以"标准格式"编写:抽象地没有示例.


Nic*_*ume 5

据我所知,应该工作。您正在使用什么编译器?

PS:仅供参考,定义名称通常用大写字母表示!

#define CHOICE 3