sizeof(BITMAPFILEHEADER)

WinDef.hでのWORDとDWORDの定義は以下の通り


typedef unsigned short WORD;
typedef unsigned long DWORD;

WinGDI.hでのBITMAPFILEHEADERの定義は以下の通り


typedef struct tagBITMAPFILEHEADER {
WORD bfType;
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;
} BITMAPFILEHEADER, FAR *LPBITMAPFILEHEADER, *PBITMAPFILEHEADER;

cout << sizeof(BITMAPFILEHEADER) << endl;

したら、結果は「14」

でも、自分で上記の定義をしてsizeofしたら結果は「16」

はぁ???


たぶん、メモリ境界の関係で、自分で定義したら
WORD
WORD
DWORD
WORD
WORD
DWORD

になってるんだろうけど、なんで???え〜??
Windows.h定義と自前定義で何が違うんだろう????