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 : 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
    }
ce qui m'envoie sur la console :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
0 : ok
2 : ok
3 : ok
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".
Comment faire ?

Merci d'avance !