此宏(offsetof)就是以函数的形式返回结构体或者联合体类型中成员,成员的字节为单位的偏移量。通俗点来说就是计算偏移量的。
宏的实现方法
#define offsetof(type,member) (int)&(((struct S*)0)->member)
1,定义一个常量0。
2,把这个常量装换成结构体指针,就可以访问后面的空间(struct S*)0。
3,是这个结构体指针指向这个参数((struct S*)0)->member。
4,取这个结构体变量的地址&(((struct S*)0)->member)。
5,强制类型转换(int)&(((struct S*)0)->member)。