图片来源:https://www.pixiv.net/artworks/35809597
标准方式
#pragma pack(push) // 将当前对齐方式压栈
#pragma pack(1) // 对齐到1字节
struct A {
char c;
int n;
};
#pragma pack(pop) // 恢复原来的对齐方式
或者
#pragma pack(1) // 对齐到1字节
struct A {
char c;
int n;
};
#pragma pack() // 恢复默认的对齐方式,不会恢复设置pack(1)之前的对齐方式,一些情况下可能产生问题
GNU C属性
struct A {
char c;
int n;
} __attribute__((packed));
参考: