图片来源: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));
参考:
- https://zh.wikipedia.org/wiki/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%AF%B9%E9%BD%90
- https://blog.csdn.net/zhangxiong2532/article/details/50826917
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。