这是stddef.h中的一系列宏之一。
#define offsetof(s,m) (size_t)&(((s *)0)->m)
(s *)0是什么意思?
答案 0 :(得分:7)
这是一种编写NULL
类型pointer-to-s
指针的方法。通过获取地址为0的m
s
成员的地址,您可以在m
内获得s
的偏移量。
答案 1 :(得分:3)
这是一种类型转换,将0
转换为pointer to s
。
答案 2 :(得分:0)
它是s
指针的强制转换。在这种情况下,s
是宏的一个参数,希望是类型名称。
答案 3 :(得分:0)
创建类型为s
且值为零(null)
答案 4 :(得分:0)
应该是一个类型名称,例如int
,因此(s*)0
基本上是将0
转换为指针类型。
答案 5 :(得分:0)
0
不仅是整数零,还是空指针。因此((S*)0)
将空指针强制转换为指向s
的指针(其中s
可能是结构)。