J'ai décrit sous forme d'un champ de bit l'en tete des données pour un protocole de communication sans fil basé sur le 802.15.4.
Voici cette description:
typedef struct
{
unsigned type : 3;
unsigned security : 1;
unsigned frame_pending : 1;
unsigned ack_request : 1;
unsigned intra_pan : 1;
unsigned : 1;
unsigned : 2;
unsigned dest_addr_mode : 2;
unsigned : 2;
unsigned src_addr_mode : 2;
} FCF_bits;
typedef union
{
FCF_bits bits;
PHY_UINT16 val;
struct
{
PHY_UINT8 high;
PHY_UINT8 low;
} byte;
} FCF;
Lorsque j'affiche le contenu de cet en tete, je vois 4 octets qui s'affichent alors que j'en attend seulement 2.
J'ai essayer en encadrant le tout de #pragma pack(1) et #pragma pack(), mais rien à faire.
sizeof(FCF_bits) vaut 4. Sauriez-vous pourquoi? (et par la meme occasion, comment résoudre ce problème?)
Merci d'avance.
Vive le C
Savon