作者:lp-阳光切割了记忆的角度 | 来源:互联网 | 2023-10-13 09:34
linux内核提供了一个container_of()宏,可以根据结构体某个成员的地址找到父结构的地址。```cpp#definecontainer_of(ptr,type,member)({
linux内核提供了一个container_of()宏,可以根据结构体某个成员的地址找到父结构的地址。```cpp#define container_of(ptr, type, member) ({ \ const typeof( ((type *)0)->member ) *__mptr = (ptr);\ (type *)( (char *)__mptr - offsetof(type,member) );)```而在Nginx也是效仿采用一样的宏获取父结构地址。```cpp#define ngx_queue_data(q, type, link) \ (type *) ((u_char *) q - offsetof(type, link))```