Problème avec un struct et uint_32_t
bonjour,
j'ai un problème qui me sidère complètement... J'ai un struct composé un peu dans ce genre :
Code:
1 2 3 4 5 6 7 8 9 10
|
typedef monstruct1*{
u_int8_t val1;
u_int8_t val2;
} monstruct1_t;
typedef monstruct2*{
u_int8_t val1;
u_int32_t val2;
} monstruct2_t; |
Lorsque je fais :
Code:
1 2 3
|
monstruct1.val1 = 0xAA;
monstruct1.val2 = 0xFF; |
La mémoire contient bien : AA FF
en revanche si je fais :
Code:
1 2 3
|
monstruct2.val1 = 0xAA;
monstruct2.val2 = 0xFFFFFFFF; |
La mémoire contient : AA 00 00 00 FF FF FF FF... d'où j'en tire que j'ai 3 fois 0x00 qui se sont insérés entre mon val1 et mon val2.
Si je mets val2 en u_int16_t j'obtiens : AA 00 FF FF... je n'ia plus qu'un 0x00 qui s'est inséré.
Je précise que je suis sous g++ sous Mac os x en 64 bits. Est-ce que quelqu'un comprend quelque chose à tout ca ??? Je suis complètement incapable de construire un pauvre struct même pas compliqué à cause de ca !!!
Merci pour votre aide
Tristan