本文共 965 字,大约阅读时间需要 3 分钟。
container_of(ptr, type, member);ARGUMENTS ptr the pointer to the member.//代表指针 type the type of the container struct this is embedded in.//类型 member //成员变量 the name of the member within the struct.
作用:通过一个结构体变量中的成员地址找到这个结构体变量的首地址
#include#undef offsetof#ifdef __compiler_offsetof#define offsetof(TYPE, MEMBER) __compiler_offsetof(TYPE, MEMBER)#else#define offsetof(TYPE, MEMBER) ((size_t)&((TYPE *)0)->MEMBER)#endif#define container_of(ptr, type, member) ({ \ const typeof( ((type*)0)->member ) *__mptr = (ptr); \ (type*)( (char*)__mptr - offsetof(type,member) ); })typedef struct { int age; int num;} student;int main(){ student s; printf("ss:%p\n", &s); student *temp = container_of(&s.num, student, num); printf("temp:%p\n", temp); return 0;}结果:ss:0x7fff156fe320temp:0x7fff156fe320通过s.num的地址找到了结构体变量的地址
转载地址:http://sxkni.baihongyu.com/