我已经看到无数类似“我不喜欢填充如何将其关闭”形式的问题,但还没有找到任何关于强制编译器提供额外填充的内容。
我的具体情况看起来像
struct particle{
vect2 s;
vect2 v;
int rX;
int rY;
double mass;
int boxNum;
};
哪里vect2
有简单的struct {double x; double y;} vect2
。为了使用 SSE2,我需要能够加载一对双精度,对齐到 16 字节边界。这曾经有效,直到我添加了 extra int
,将我的结构大小从 48 字节推到 56 字节。结果是段错误。
是否有某种编译器指令我可以使用,或者说“填充这个结构以使其长度为 16 字节的倍数”,或者“这个结构有 16 字节的对齐”?我知道我可以手动完成(例如添加一个额外的 char[12]),但我真的宁愿只告诉编译器(GCC,最好是 ICC 兼容),如果我更改了就不必手动完成未来的结构。