1.
#pragma pack(push,1) typedef struct tagBITMAPFILEHEADER { uint16_t bfType; uint32_t bfSize; uint32_t bfReserved; uint32_t bfOffBits; } BITMAPFILEHEADER; typedef struct tagBITMAPINFOHEADER { uint32_t biSize; int32_t biWidth; int32_t biHeight; uint16_t biPlanes; uint16_t biBitCount; uint32_t biCompression; uint32_t biSizeImage; int32_t biXPelsPerMeter; int32_t biYPelsPerMeter; uint32_t biClrUsed; uint32_t biClrImportant; } BITMAPINFOHEADER; #pragma pack(pop)
按照上面的代码写出来的文件,文件图片打开失败,说文件破损。
后来才发现BMPFILEHEADER_T这个数据接口的内部变量排序,并没有4字节对齐,导致sizeof(BMPFILEHEADER_T)比预想的大!
所以直接用宏设置数据结构的字节对齐方式为:1字节对齐。