我听说了:
[ABIs]保证结构的确切布局,每个成员的字节偏移,哪些位用于位字段,填充的位置和填充量等等...
但我一直认为填充和对齐是未指定的和不可靠的.
是否安腾ABI(其中GCC使用)实际上指定这些事情(据我所知,它似乎并没有超出规定范围)?
如果确实如此,那么选项如何__attribute__ ((packed))适应呢?他们最终通过改变事物的排列来打破ABI吗?
或者,正如引言所暗示的那样,工具链之间只是未指定包装,但事实上在使用某个ABI时是否可靠和可预测?然后,再次,如何__attribute__ ((packed))适应这种情况?
ISO 标准 C++ 规范未指定填充和对齐,因此不可靠。
引文中使用“精确”一词是夸张的。Itanium ABI(GCC 使用的)可以根据需要指定这些内容(在指定范围内),而不是总是准确地指定。
事实上,在假设预定目标架构和环境的工具链的使用中,打包是可靠且可预测的。ABI。当适用于工具链的所有目标特定细节__attribute__ ((packed))像任何其他构造一样预先确定时,将为工具链正确工作生成可预测的输出。
| 归档时间: |
|
| 查看次数: |
770 次 |
| 最近记录: |