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:
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:
J'ai essayer de faire une maccro du genre:
Mais ça ne marche pas, a priori c'est la virgule qui pose problème...
Des avis sur la question ?
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:
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))},
};Code:
#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:
Code:
Type_Tableau ListeTableaux[]={
{MACCRO_3(Vert)},
{MACCRO_3(Rouge)},
};Code:
#define MACCRO_3(couleur) (MACCRO_1(couleur), MACCRO_2(couleur))Des avis sur la question ?
Aucun commentaire:
Enregistrer un commentaire