#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
#define container_of(ptr, type, member) ({ /
const typeof( ((type *)0)->member ) *__mptr = (ptr); /
(type *)( (char *)__mptr - offsetof(type,member) );})
typedef struct{
int a;
int b;
int c;
}Me_t;
例如://得到Me_t的成员b,在结构中的位置obj_b = 4
int obj_b = offsetof(Me_t, b);
例如: Me_t me_obj;
Me_t* me_obj_addr = NULL;
//得到me_obj对象结构的实际地址
me_obj_addr = container_of(&me_obj.b, Me_t, b);
其中
const typeof( ((type *)0)->member ) *__mptr;
在这里可以理解成
const int *__mptr;