Bonjour,
Indépendamment de la propreté du code et de l'hérésie de procéder ainsi, soit le code suivant :
etc.
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
31
32 #define DEFINITION_VARIABLE(_type_, _valeur_) { \ _type_ toto; \ toto = (_valeur_) * ((_valeur_) - 1); \ } #define COMPARE_AFFECTE(_type2_, _valeur2_) { \ if (toto > (_valeur2_)) \ *sortie = (_type_2)toto: \ else \ *sortie = (_type_2)0; \ return; \ } void short2int(short entree, int * sortie) { DEFINITION_VARIABLE(short, entree - 2); COMPARE_AFFECTE(int, 125); } void short2long(short entree, long * sortie) { DEFINITION_VARIABLE(short, entree + 3); COMPARE_AFFECTE(long , 3254); } void uchar2short(unsigned char entree, short * sortie) { DEFINITION_VARIABLE(unsigned char, entree); COMPARE_AFFECTE(short , 17); }
Dans chacune de mes fonctions, je vais avoir pour COMPARE_AFFECTE le message d'erreur "variable toto non déclaré".
J'avoue être surpris puisque je pensais naïvement que le pré-processeur faisait du copier / remplacer de macros avant la compilation.
J'ai raté quelque chose ?
Merci d'avance pour vos réponses.
Partager