Bonjour,

J'ai le code suivant qui ne me génère pas d'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
typedef enum _TOTO {
  VAL1 = 0,
  VAL2,
  VAL3
} TOTO;
 
#define MY_CONFIG  VAL2   
#if (MY_CONFIG == VAL1)   
// ...   
#else   
  #error Config error   
#endif
=> je ne peux pas modifier TOTO car il est défini dans une bibliotheque

Comment faire pour détecter l'erreur ?
=> a priori, le pre-processeur remplace VAl1 et VAL2 par la valeur 0 car les définitions qui sont dans l'enum ne sont pas vues par celui-ci

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
typedef enum _TOTO {
  VAL1 = 0,
  VAL2,
  VAL3
} TOTO;
 
#ifndef VAL1   
  #error VAL1 undef   
#endif
=> j'ai le message d'erreur qui s'affiche

Merci d'avance


-----------
Remarque :
Dans un fichier .h, je déclare la valeur de CONFIG pour dire dans qu'elle configuration je suis

Et dans un .c j'utilise CONFIG comme paramêtre d'une fonction (la fonction fait partie d'une bibliotheque que je ne peux pas modifier) :