正如主题所说,我得到了计算相同结构的相同操作的不同结果。结构如下。
struct test
{
char m1;
double d1;
}
在 linux 的 gcc-4.6.3 和 gcc-4.2 中使用 sizeof(struct test) 计算时,我得到的结果是“12”。当我在 linux 中使用 gcc-4.6.1 和在 WinXP 中使用 VC 6.0 时,我得到了结果“16”。所以我很困惑,为什么会发生这种情况?GCC 如何计算结构的大小?
添加:
正如答案所说,arm linux 需要 AAPCS 定义的 8 字节对齐,但为什么 x86 中的 vc 6.0 得到结果“16”?有人使用 vc 2003 或更高版本计算吗?
C89/C99等C标准还定义了什么?