Bonjour,

Je viens de découvrir une petite curiosité avec DevCpp, mais que j'ai reproduit aussi avec Builder C++...

J'ai les structures suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <windows.h>
 
typedef struct _PlaceableMetaHeader{
  DWORD Key;           /* Magic number (always 9AC6CDD7h) */
  WORD  Handle;        /* Metafile HANDLE number (always 0) */
  WORD  Left;          /* Left coordinate in metafile units */
  WORD  Top;           /* Top coordinate in metafile units */
  WORD  Right;         /* Right coordinate in metafile units */
  WORD  Bottom;        /* Bottom coordinate in metafile units */
  WORD  Inch;          /* Number of metafile units per inch */
  DWORD Reserved;      /* Reserved (always 0) */
  WORD  Checksum;      /* Checksum value for previous 10 WORDs */
} PLACEABLEMETAHEADER;
 
typedef struct _WindowsMetaHeader {
  WORD  FileType;       /* Type of metafile (0=memory, 1=disk) */
  WORD  HeaderSize;     /* Size of header in WORDS (always 9) */
  WORD  Version;        /* Version of Microsoft Windows used */
  DWORD FileSize;       /* Total size of the metafile in WORDs */
  WORD  NumOfObjects;   /* Number of objects in the file */
  DWORD MaxRecordSize;  /* The size of largest record in WORDs */
  WORD  NumOfParams;    /* Not Used (always 0) */
} WMFHEAD;
Et le code suivant me renvoie des tailles de 24 octets...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
PLACEABLEMETAHEADER stHeader1;
int nTaille = sizeof(stHeader1);// renvoie 24 au lieu de 22
 
WMFHEAD stHeader2;
nTaille = sizeof(stHeader2);// renvoie 24 au lieu de 18
... au lieu de 22 et 18...

J'ai réussi à contourner le problème mais visiblement le sizeof arrondit la taille au multiple de 8 supérieur.

Bon je viens de trouver la solution avec C++ Builder, c'est dans les options de compilation.
Il faut aller dans "Projet \ Options \ Options avancées du compilateur \ Alignement des données : "byte" au lieu de "quad word" (par défaut) "

Vous savez comment changer cette option avec DevCpp ?