Preprocesseur & comparaison de #define
Bonjour,
une question qui me mortifie :
comment comparer 2 "valeurs" définies au niveau du préprocesseur par des #define ?
Un bout de code valant mieux qu'un long discours, voici :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| #define FOO_0 123
#define BAR_0 123
#define FOO_1 456
#define BAR_1 789
#define FOO_2 spam
#define BAR_2 spam
#define FOO_3 spam
#define BAR_3 eggs
void test ( void )
{
#if FOO_0 == BAR_0
printf("0 : ok\n") ;
#endif
#if FOO_1 == BAR_1
printf("1 : ok\n") ;
#endif
#if FOO_2 == BAR_2
printf("2 : ok\n") ;
#endif
#if FOO_3 == BAR_3
printf("3 : ok\n") ;
#endif
} |
ce qui m'envoie sur la console :On voit qu'avec des entiers, j'ai bien la comparaison que j'attends, mais avec des identifiants, ça ne marche pas !
J'imagine que pour les cas 2 et 3, les FOO et BAR sont remplacés par spam et eggs qui sont eux-même remplacé par rien puisqu'ils ne sont pas définis.
Et comme rien == rien, les 2 tests sont vérifiés...
Mais ça ne m'arrange pas ! Je voudrais faire un test qui me permette d'afficher "2 : ok" mais pas "3 : ok". :triste:
Comment faire ?
Merci d'avance !