通过结构体成员获取结构体地址
我们在编程中有时会遇到想通过某个结构体成员变量的地址来获取此结构体的首地址。
对于这个问题,可以分两种情况(第一种是第二种的特例)
- 成员变量是结构体的第一个成员:我们都知道,结构体的首地址等于其第一个成员的首地址,所以对这种情况可以直接进行强转。
- 成员变量是结构体的任意一个成员:下面会重点谈论此方法。
Linux实现此功能的源码如下
#define offsetof(TYPE, MEMBER) ((int) &((TYPE *)0)->MEMBER)
#define container_of(ptr, type, member) ({ \
const typeof( (