gpt4 book ai didi

c++ - Itanium ABI 在多大程度上真正指定了填充和对齐?

转载 作者:IT老高 更新时间:2023-10-28 23:21:33 26 4
gpt4 key购买 nike

有人告诉我:

[ABIs] guarantee the exact layout of the struct, byte offset of every member, which bits are used for bit fields, where and how much padding there is, etc...

但我一直认为填充和对齐是未指定且不可靠的。

是否 the Itanium ABI (GCC 使用的)实际上指定了这些东西(据 所知,it doesn't appear to 超出了指定范围)?

如果是这样,像 __attribute__ ((packed)) 这样的选项如何适应呢?他们最终是否会通过改变事物的对齐方式来破坏 ABI?

或者,正如引用者所暗示的那样,打包只是在工具链之间未指定,但实际上在使用某个 ABI 时是可靠且可预测的?然后,再一次,像 __attribute__ ((packed)) 这样的东西是如何适应的?

最佳答案

填充和对齐未在 ISO 标准 C++ 规范中指定,因此不可靠。

在引文中使用“精确”一词是夸大其词。 Itanium ABI(GCC 使用)可以根据需要指定这些内容(在指定范围内),而不是总是和精确ly

假设预先确定的目标架构和环境,即使用工具链,打包实际上是可靠且可预测的。 ABI。当适用于工具链的所有目标特定细节都预先确定时,__attribute__ ((packed)) 就像任何其他构造一样,都会为工具链正常工作生成可预测的输出。

关于c++ - Itanium ABI 在多大程度上真正指定了填充和对齐?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13582153/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com