C 结构对齐

C struct aligned

是否有一些 gcc 可移植编译指示,所以我可以使 C struct 与内存对齐?

我希望我的程序是可移植的(Linux、FreeBSD、MacOS、Cygwin),但我会继续使用 gcc。

如果您不想对齐结构的成员(即成员之间没有任何填充),对于 gcc 您可以使用 packed 属性:

struct bla
{
    int x;
    char y;
} __attribute__((__packed__));

或使用pack pragma:

#pragma pack(1)
struct bla
{
     int x;
     char y;
};
#pragma pack()

或使用 -fpack-struct 选项编译。

您还可以使用 aligned 属性强制整个结构的最小对齐,但据我所知您不能使用 gcc.[=19= 禁用整个结构的对齐]