C/C++取消字节对齐

图片来源: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));

参考:

知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注