【发布时间】:2017-09-30 21:39:34
【问题描述】:
正如 C11 草案所述,我可以向以下两点保证:
...结构对象中可能有未命名的填充,但不是在其开头。
可能有未命名的填充在结构或联合的末尾。
但是,如果任何两个成员之间的填充是可以接受的,这对我来说是模棱两可的。 这是因为,通过说第二段,标准似乎暗示填充只能在结构或联合的末尾。例如,假设int在这里占用4个字节,
#include <stdio.h>
struct s {
char c;
int a;
};
int main(void) {
printf("%d\n", sizeof(struct s));
return 0;
}
我可以确定c 和a 之间没有填充吗?
【问题讨论】:
-
@user694733 我不这么认为。我是根据标准推理,这是有区别的。
标签: c struct language-lawyer padding