我可以安全地将第一个struct成员的地址解释为整个struct的地址吗?

时间:2017-07-10 09:20:54

标签: c list struct

我正在实现我自己的列表,类似于Linux list.h 中的列表,但不想打扰 container_of

我已经读过C编译器不允许重新排序struct成员,但是可以保证第一个成员的偏移始终为零吗?

我是否可以强加一个限制,即必须首先声明列表头成员才能通过将头部地址转换为容器类型来获取整个结构成员?

1 个答案:

答案 0 :(得分:6)

来自C standard

  

6.7.2.1结构和联合说明符

     

15。在结构对象内,非位字段成员和位域中的单位   驻留的地址按声明的顺序增加。 指向a的指针   结构对象,适当转换,指向其初始成员(或者如果该成员是   比特字段,然后到它所在的单位),,反之亦然。可能有未命名的   在结构对象中填充,但不在其开头。

强调我的