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

ole*_*gst 1 c struct list

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

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

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

LPs*_*LPs 6

C标准

6.7.2.1结构和联合说明符

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

强调我的