1、获取一个结构成员的偏移
#define offset(type,mem) ((size_t) &((type*)0)->mem)
2、通过一个结构成员获取结构的首地址
#define container_of( ptr, type, mem ) \
({ const typeof(((type*)0)->mem) *_mptr = (ptr);\
(type*)((char*)_mptr - offset(type,mem)); })
1、获取一个结构成员的偏移
#define offset(type,mem) ((size_t) &((type*)0)->mem)
2、通过一个结构成员获取结构的首地址
#define container_of( ptr, type, mem ) \
({ const typeof(((type*)0)->mem) *_mptr = (ptr);\
(type*)((char*)_mptr - offset(type,mem)); })

被折叠的 条评论
为什么被折叠?