Pages

Utilisation d'une maccro pour initialiser une structure sujet

mercredi 29 janvier 2014




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:


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:


#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:


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 ?




Aucun commentaire:

Enregistrer un commentaire