Utilisation d'une macro pour initialiser une structure
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":
Code:
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))},
}; |
Ensuite j'utilise des maccros pour initialiser les champs de ma structure, ça devient:
Code:
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)},
}; |
MACCRO_1 va initialiser le champs "pTableau" et MACCRO_2 le champs "TableauTaille".
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:
Code:
1 2 3 4
| Type_Tableau ListeTableaux[]={
{MACCRO_3(Vert)},
{MACCRO_3(Rouge)},
}; |
J'ai essayer de faire une maccro du genre:
Code:
#define MACCRO_3(couleur) (MACCRO_1(couleur), MACCRO_2(couleur))
Mais ça ne marche pas, a priori c'est la virgule qui pose problème...
Des avis sur la question ?