/**
*由已知结构体里的一个成员指针来计算出该结构体指针
*
* @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地址开始到指定成员的地址偏移量,