#include<stdio.h>
//自己设计一个与windows.h定义的结构体BITMAPFILEHEADER
//大小相同的结构体 _BITMAPFILEHEADER
//原结构体:
/**************************
typedef struct tagBITMAPFILEHEADER {
WORD bfType;
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;
} BITMAPFILEHEADER;
****************************/
struct _BITMAPFILEHEADER {
short int bfType;
int bfSize;
short int bfReserved1;
short int bfReserved2;
int bfOffBits;
};
int main()
{
_BITMAPFILEHEADER bfh;
printf("sizeof(int)=%d\n",sizeof(int));
printf("sizeof(unsigned int)=%d\n",sizeof(unsigned int));
printf("bfh=%d\n",sizeof(bfh));
printf("sizeof(_BITMAPFILEHEADER)=%d\n", sizeof(_BITMAPFILEHEADER));
}
结果:
修改代码,在结构体前后添加#pragma pack:
#pragma pack(2) // 2字节对齐
struct _BITMAPFILEHEADER {
short int bfType;
int bfSize;
short int bfReserved1;
short int bfReserved2;
int bfOffBits;
};
#pragma pack() // 恢复先前的pack设置