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 :ce qui m'envoie sur la console :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 }On voit qu'avec des entiers, j'ai bien la comparaison que j'attends, mais avec des identifiants, ça ne marche pas !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 0 : ok 2 : ok 3 : ok
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".
Comment faire ?
Merci d'avance !
Partager