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= 禁用整个结构的对齐]
是否有一些 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= 禁用整个结构的对齐]