【求指点】谁能帮忙看一下这个宏定义的功能是什么?谢谢
宏定义如下:
#define func(s.m) (size_t)(&(((S*)0)->m))(*在S的右上角)
[解决办法]
#define offsertof(s,m) (size_t) &(((s*)0)->m)
这个宏的功能是求成员m相对于结构体s的相对位置。
&(((s*)0)->m):(s*)0:将地址0转换为结构体指针
((s*)0)->m:获取上述结构体的成员变量m
&(((s*)0)->m):获取上述成员变量m的绝对地址
因为s的地址为0,所以上述绝对地址可以认为是成员变量m相对于结构体s的相对位置