我正在尝试使用 struct 来映射 BitMap 文件的标题。似乎编译器正在进行 4 字节(32 位)对齐,但我需要 2 字节。我试图通过编译器指令来改变它,如下所示
#pragma pack(2)
和
__attribute__ ((aligned(xx)));
这两个似乎没有任何效果。还有另一种方法可以做到这一点吗?我在 Mac OS X Lion 上使用 XCode 4.3。我测试了 Apple LLVM 和 Apple GCC 编译器。
这是结构类型定义
typedef struct {
int16_t bfType;
int32_t bfSize;
int16_t bfReserved1;
int16_t bfReserved2;
int32_t bfOffBits;
int32_t biSize;
int32_t biWidth;
int32_t biHeight;
int16_t biPlanes;
int16_t biBitCount;
int32_t biComression;
int32_t biSizeImage;
int32_t biXPelsPerMeter;
int32_t biYPelsPerMeter;
int32_t biClrUsed;
int32_t biClrImportant;
} THeader;