Je ne vois pas d'autres solutions que d'écrire
#define AN_VAR(x) AN##x##_VAR
#define GET_VAR(x) if(AN_ENB(x)) AN_VAR(x) = tabVal[i++]
Normalement, le compilateur devrait éliminer les tests puisqu'il sait si ils sont vrai ou faux et remplacer
if(AN0_ENB) AN0_VAR = tabVal[i++]
par l'équivalent de
- si AN0_ENB == 1 : AN0_VAR = tabVal[i++]
- si AN0_ENB == 0 : pas d'opérations; AN0_VAR = tabVal[i++] ne pouvant dans ce cas jamais être exécuté
(mais il peut s'étonner de ces tests bidons et émettre des warnings)
Partager