Bonjour à tous ceux qui me liront,

Je n'ai pas l'habitude de poster des questions, je connais très bien le C/C++ mais aujourd'hui, je tombe sur un os :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
typedef unsigned long int DWORD;    // 32bit
typedef unsigned short int WORD;     // 16bit
 
struct test1 { WORD word; };
struct test2 { DWORD dword; };
struct test3 { WORD word; DWORD dword; };
 
...
 
cout << sizeof(test1);        //     => 2  : OK
cout << sizeof(test2);        //     => 4  : OK
cout << sizeof(test3);        //     => 8  : ARRGHH
Ma kes ki space ????
Je suis sous ubuntu 10.4, je dev avec eclipse galileo et je compile avec g++ (the last version normalement).

Je veux faire quelque chose du style :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
struct mystruct { ... } ex;   //  plein de BYTE(char), WORD, DWORD...
ifstream in;
in.read((BYTE*) &ex, sizeof(mystruct));
Et donc c'est la cata

Pourquoi lorsque l'on a une structure mélangeant des types 16bit et 32bit il nous met des 32bit à la place des 16bit ?
There is something qui m'echappe.

Si un expert de l'implémentation de C++ et qui connait g++ à fond peut donc m'aider à comprendre...

Merci d'avance