views:

289

answers:

3

Is there a way to do check for numerical equality in macros?

I want to do somethign like

#define choice 3

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

#if choice == 4
 ...
#endif

Does C macros have support for thigns like this?

+4  A: 

Indeed that should work. See any reference.

wallyk
A: 

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

Niklaos
A: 

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 preprocessor treats it as having the value 0.

Loadmaster