5

在 cl 编译器选项 /Zp 的 msdn 上,提到“在 8 字节边界上打包结构(默认)”。这是否意味着如果存在大小 > 8 字节的数据类型,默认情况下(没有编译器选项或编译指示包)它不会自然对齐,而是 8 字节对齐。如果是,那么 GCC/clang 就是这种情况吗?

我检查了 GCC,使用-fpack-structand __uint128_t,它没有任何这样的默认值。例如sizeof(tStruct)是 32 和 24:

struct tStruct {
uint64_t    a;
__uint128_t b;
};

我无法在 Windows 上检查相同的内容,因为它不提供任何大于 8 字节的数据类型。

4

0 回答 0