【发布时间】:2021-10-29 16:03:12
【问题描述】:
通常假设 offsetof() 可以应用于联合(您甚至可以在 SO 的几个问题中找到这种用法),但是,似乎从 C90 到现在的所有 C 规范都只说 offsetof( ) 宏支持结构。我现在正在看 Jens Gustedt 的“Modern C”一书,表 4.3 将“struct”指定为 offsetof() 的第一个参数的类型。
那么,...offsetof() 是否正式支持联合?
【问题讨论】:
-
重点是什么?无论如何,
union中的每个字段都位于偏移量0。 -
@EugeneSh。没有。联合可以包含匿名结构。此结构中成员的偏移量可以不为零
-
@tstanisl 对...不管怎样,标准将“结构”作为参数进行讨论,但是宏的“典型”实现可以很好地与联合体一起使用。
-
A
union只是一个大到足以容纳任何指定类型并保存最后分配的类型的存储。offsetof()在那里毫无意义。 -
@tstanisl 如果将其应用于嵌套结构,那么重要的是结构,而不是父联合。他们不在一个级别
标签: c language-lawyer