Conflits de macros

Conflits de macros - C - Programmation

Marsh Posté le 10-12-2009 à 17:11:20    

Hello,
 
J'utilise une API qui fournit une ribambelle de macros de type :
 
#define _INT 0
#define _FLOAT 1
#define _DOUBLE 2
#define _BOOLEAN 3
...
 
Une fonction de l'API me renvoie un entier correspondant à ces valeurs de macros. J'applique sur cette valeur un switch afin de faire le traitement approprié selon le type.
 
Une version suivante de l'API a supprimé une entrée :
 
#define _INT 0
#define _FLOAT 1
#define _BOOLEAN 2
...
 
Ce qui décale tout, et bousille mon switch...
 
Mon apli devant fonctionner avec les deux versions de l'API, comment contourneriez-vous le problème ?
 
Merci.

Reply

Marsh Posté le 10-12-2009 à 17:11:20   

Reply

Marsh Posté le 10-12-2009 à 17:22:19    

normalement, ton switch devrait simplement être basé sur les macros.
 
Bon, ensuite, les define pour faire des enums, ca ne me parait pas être une bonne idée, mais j'imagine que tu n'y peux rien, si ca sort d'une api tierce ...


---------------
last.fm
Reply

Marsh Posté le 10-12-2009 à 17:54:25    

Hmm, quand tu dis "fonctionner", tu sous-entends compiler, hein ? Parce que si c'est ça, il suffit de faire un truc du genre :

Code :
  1. switch (taValeur) {
  2. case _INT: break;
  3. case _FLOAT: break;
  4. #ifdef _DOUBLE
  5. case _DOUBLE: break;
  6. #endif
  7. case _BOOLEAN: break;
  8. }


Pas super joli, mais bon, mieux que rien.
 
Sinon, le léger avantage des #define par rapport aux enum, c'est que tu peux faire des #ifdef dessus.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed