【发布时间】:2012-06-23 05:06:04
【问题描述】:
我希望 C 结构的大小是 16 字节的倍数(16B/32B/48B/..)。 它的大小无关紧要。它只需要是 16 字节的倍数。
我怎样才能强制编译器这样做?
【问题讨论】:
-
您的标题使用了对齐这个词,但是您的问题主体谈到了结构的大小。你真正想要完成的是什么?我也很好奇为什么。
-
这里有一篇现有的文章,它提供了一种使用联合填充到特定大小的解决方案。但是,该解决方案需要知道结构 Size of Struct 的大小,但是您需要做的是对 char 数组使用大小计算,例如 (sizeof(struct it)/16+1)*16 而不是数字常量.
-
@RichardChambers 原因是因为我有一个 16B 对齐的数据块,并且这个结构将位于块的开头,我仍然想要块的实际数据部分的开头(在结构之后)对齐到 16B 以获得良好的 SSE 性能。
-
@RichardChambers 是的。标题似乎有些误导。我关心的是结构的大小,而不是对齐方式。