Bonjour,
Voici mon problème: je souhaite utiliser une maccro pour initialiser une structure.
Je m'explique, ci dessous le code qui initialise une structure de manière "classique":
Ensuite j'utilise des maccros pour initialiser les champs de ma structure, ça devient:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 unsigned char Tableau_Vert[]={1,6,5}; unsigned char Tableau_Rouge[]={5,8,10,14,22,2}; typedef struct{ unsigned char* pTableau; unsigned char TableauTaille; }Type_Tableau; Type_Tableau ListeTableaux[]={ {Tableau_Vert, (unsigned char)(sizeof(Tableau_Vert)/sizeof(unsigned char))}, {Tableau_Rouge, (unsigned char)(sizeof(Tableau_Rouge)/sizeof(unsigned char))}, };
MACCRO_1 va initialiser le champs "pTableau" et MACCRO_2 le champs "TableauTaille".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 #define MACCRO_1(couleur) (Tableau_##couleur) #define MACCRO_2(couleur) ((unsigned char)(sizeof(Tableau_##couleur)/sizeof(unsigned char))) Type_Tableau ListeTableaux[]={ {MACCRO_1(Vert), MACCRO_2(Vert)}, {MACCRO_1(Rouge), MACCRO_2(Rouge)}, };
Jusque là tout va bien...
Mais là où ça se complique c'est que je souhaite utiliser un seule maccro pour initialiser les 2 champs de ma structure...mais je sais pas faire :-(
Je voudrais au final ça:
J'ai essayer de faire une maccro du genre:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Type_Tableau ListeTableaux[]={ {MACCRO_3(Vert)}, {MACCRO_3(Rouge)}, };
Mais ça ne marche pas, a priori c'est la virgule qui pose problème...
Code : Sélectionner tout - Visualiser dans une fenêtre à part #define MACCRO_3(couleur) (MACCRO_1(couleur), MACCRO_2(couleur))
Des avis sur la question ?
Partager