// 参考bmp.h
设置编译器使存储的结构体n字节对齐
#pragma pack(push)
#pragma pack(n) // 强制让编译器内存对齐为:1字节对齐 /* 必须在结构体定义之前使用 */
// 在这儿定义多个结构体 //
#pragma pack(pop) /* 恢复先前的pack设置 */
如:
#pragma pack(push) /* 将当前pack设置压栈保存 */
#pragma pack(1) // 强制让编译器内存对齐为:1字节对齐 /* 必须在结构体定义之前使用 */
// 文件信息头
typedef struct file_info_head {u16 bfType; /* 数据类型 */ u32 bfSize; u16 bfReserved1; u16 bfReserved2; u32 bfOffBits;
} file_info_head_t; // 位图信息头
typedef struct bitmap_info_head { /* bmih */u32 biSize; // 位图信息头的大小 s32 biWidth; // 位图的宽度(单位是像素)s32 biHeight; // 如果为正,说明位图倒立(即数据表示从图像的左下角到右上角),如果为负说明正向; u16 biPlanes; // 颜色平面数,总被设置为1u16 biBitCount; // bpp: 一个像素用几位表示, 1、2、4、8、16、24、32;u32 biCompression; // 表示不压缩, 必须为0。u32 biSizeImage; // 实际图像大小 = 文件大小 - 偏移量; s32 biXPelsPerMeter; // 单位是像素/米,有符号整数; s32 biYPelsPerMeter; // 单位是像素/米,有符号整数;u32 biClrUsed; // 为0说明使用所有;u32 biClrImportant; // 为0说明都重要;
} bitmap_info_head_t;#pragma pack(pop) /* 恢复先前的pack设置 */