bonjour,

j'ai un problème qui me sidère complètement... J'ai un struct composé un peu dans ce genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
monstruct1.val1 = 0xAA;
monstruct1.val2 = 0xFF;
La mémoire contient bien : AA FF

en revanche si je fais :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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