标签: c portability pointer-arithmetic
使用ISO 9899:2011(即C11)描述的语言,T是完整的数据类型和声明
T
struct { T a, b; } s;
我可以假设&s.a + 1 == &s.b吗? C语言修订版之间的情况是否发生了变化?
&s.a + 1 == &s.b
答案 0 :(得分:3)
没有。除了在第一个成员之前不能进行初始填充之外,该标准不要求结构填充或缺少结构填充。
当然,每个结构成员必须正确对齐其类型。
答案 1 :(得分:0)
不便携。所有标准保证是结构中成员的偏移量严格增加。工具链可以随意添加任何喜欢的填充。