我想要 offsetof() 参数行mystruct1
。我试过了
offsetof(struct mystruct1, rec.structPtr1.u_line.line)
and also
offsetof(struct mystruct1, line)
但两者都不起作用。
union {
struct mystruct1 structPtr1;
struct mystruct2 structPtr2;
} rec;
typedef struct mystruct1 {
union {
struct {
short len;
char buf[2];
} line;
struct {
short len;
} logo;
} u_line;
};
The offsetof()
宏有两个参数。 C99 标准说(§7.17<stddef.h>
):
offsetof(type, member-designator)
它扩展为具有类型的整数常量表达式size_t
, 的价值
这是结构成员(由成员指示符指定)的字节偏移量,
从其结构的一开始(由类型指定)。类型和成员指示符
应是这样的
static type t;
那么表达式&(t.member-designator)
计算结果为地址常量。
所以,你需要写:
offsetof(struct mystruct1, u_line.line);
然而,我们可以观察到答案将为零,因为mystruct1
包含一个union
作为第一个成员(也是唯一一个),并且line
它的一部分是联合的一个元素,因此它将位于偏移量 0 处。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)