是否有一些gcc可移植的pragma,所以我可以将C struct 而不是作为内存对齐?
我希望我的程序可以移植(Linux,FreeBSD,MacOS,Cygwin),但我会继续使用gcc。
答案 0 :(得分:4)
如果您不想对齐结构的成员(成员之间没有任何填充),使用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
禁用整个结构的对齐。