web-dev-qa-db-fra.com

Macro C: # si vérifier l'égalité

Existe-t-il un moyen de vérifier l'égalité numérique dans les macros?

Je veux faire quelque chose comme

#define choice 3

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

#if choice == 4
 ...
#endif

Les macros C prennent-elles en charge des choses comme celle-ci?

27
anon

En effet, cela devrait fonctionner. Voir http://gcc.gnu.org/onlinedocs/cpp/If.html#If

Cette référence est exacte, mais écrite en "format standard": abstraitement sans exemples.

25
wallyk

Une autre façon d'écrire votre code utilise chaîné #Elif directives:

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

Notez que si choice n'est pas #defined, le compilateur (préprocesseur) le considère comme ayant la valeur 0.

29
David R Tribble

Pour autant que je sache, cela devrait fonctionner. Quel compilateur utilisez-vous ?

PS: Juste pour information, les noms définis sont généralement écrits en majuscules!

#define CHOICE 3

5
Nicolas Guillaume