C macro: #if check for equality

Another way to write your code uses chained #elif directives:

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

Note that if choice is not #defined, the compiler (preprocessor) treats it as having the value 0.


As far as i know that should work. What compiler are you using ?

PS : Just for information, the defines names are usually written in caps !

#define CHOICE 3


Indeed that should work. See http://gcc.gnu.org/onlinedocs/cpp/If.html#If

That reference is accurate, but written in "standards format":  abstractly without examples.