• [^] # Re: le mur

    Posté par . En réponse au message Les espacements que mettent les compilateurs C dans les structures sont ils toujours les mêmes ?. Évalué à 2.

    Haha, j'utilise le préprocesseur pour générer le code qui sérialise les structures. Un genre de X macros mais poussé un peu plus loin que la simple génération d'énumération.

    J'ai un fichier qui contient ceci:

    BEGIN(hello)
     FIELD_8(version)
     FIELD_16(id)
     FIELD_32(name)
    END()

    Et par exemple je génère la structure comme ceci:

    #define BEGIN(name) \
     struct name {
    #define FIELD_8(name) \
     uint8_t name;
    #define FIELD_16(name) \
     uint16_t name;
    #define FIELD_32(name) \
     uint32_t name;
    #define END() \
     };
    #include "fichier_qui_contient_les_definitions.def.h"
    #undef BEGIN
    #undef FIELD_8
    #undef FIELD_16
    #undef FIELD_32
    #undef END

    J'utilise ce trick à mainte reprise pour générer les fonctions qui sérialisent les structures, etc... Bon la je le montre de façon simple, mais l'ensemble est beaucoup plus complet et permet de sérialiser plein de choses :)