c – 安腾ABI在多大程度上真正指定了填充和对齐?

前端之家收集整理的这篇文章主要介绍了c – 安腾ABI在多大程度上真正指定了填充和对齐?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我听说了:
@H_403_3@[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…

@H_403_3@但我一直认为填充和排列是不明确的和不可靠的.

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

@H_403_3@如果是,那么__attribute__((packed))这样的选项如何适应呢?他们是否最终通过改变事物的一致来破坏ABI?

@H_403_3@或者,正如引述所暗示的那样,仅仅在工具链之间进行包装,但实际上在某种ABI的使用中是可靠和可预测的?那么再一次,__attribute__((打包))这样的东西又怎么适合呢?

解决方法

填充和对齐未由ISO标准C规范指定,因此不可靠. @H_403_3@在引用中使用“exact”一词是夸张的.安腾ABI(GCC使用)可以根据需要指定这些东西(如指定范围内),而不是总是和精确地指定.

@H_403_3@假设预定的目标架构和工具链,使用工具链中的包装实际上是可靠和可预测的.环境ABI.当所有适用于工具链的目标特定细节都是预先确定的__attribute__((打包))像任何其他结构一样可以预期生成输出,以使工具链正常工作.

猜你在找的C&C++相关文章