linux內核提供了一個container_of()巨集,可以根據結構體某個成員的地址找到父結構的地址。 而在Nginx也是效仿採用一樣的巨集獲取父結構地址。 ...
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)) ```