linux内核之container_of(ptr, type, member)

发布于:2021-10-25 11:34:18



/**


?*由已知结构体里的一个成员指针来计算出该结构体指针
?*
?* @ptr: ? ? ? ?结构体里已知成员指针.
?* @type: ? ? ? 所求结构体类型.
?* @member: ? ? 结构体里已知成员名字.
?*
?*/


#define container_of(ptr, type, member) ?


({ ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? const typeof( ((type *)0)->member ) *__mptr = (ptr); ? ? ? ??
? ? ? ? (type *)( (char *)__mptr - offsetof(type,member) ); ? ? ?//该成员的地址减去偏移量得到该结构体首地址


})




#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) ? ? ? ? ?//从0地址开始到指定成员的地址偏移量,









相关推荐

最新更新

猜你喜欢