C99 标准中是否保证联合只会像结构一样在末尾进行填充?与此相关的是,联盟的地址是否始终等于其任何可能成员的地址?
是的。正如您所注意到的,结构从来没有前导填充。联合的地址始终引用联合的任何组件的第一个元素(具有适当的强制转换),因此联合的开头也不能有任何填充。
是的。经过适当的转换,联合的地址也是指向联合内任何元素的指针。
ISO/IEC 9899:2011
6.7.2.12 结构和联合说明符
¶15 在结构体对象中,非位域成员和位域的单位
驻留地址按声明顺序递增。一个指向a的指针
结构对象,经过适当转换,指向其初始成员(或者如果该成员是
位字段,然后到它所在的单元),反之亦然。可能还有未命名的
在结构对象内填充,但不在其开头。
¶16 工会的规模足以容纳其最大的成员。的值在
大多数成员可以随时存储在联合对象中。一个指向a的指针
联合对象,经过适当转换,指向其每个成员(或者如果成员是位字段,
然后到它所在的单位),反之亦然。
¶17 结构或联合的末尾可能有未命名的填充。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)