如何通过结构体中的任意一个元素的地址得到这个结构体的首地址(container_of)
2012-12-22 14:32
483 查看
#define container_of(ptr, type, member) ({ /
const typeof( ((type *)0)->member ) *__mptr = (ptr); /
(type *)( (char *)__mptr - offsetof(type,member) );})
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
注意((type *)0)的使用。比如:((void *)0)();
((TYPE *)0)->MEMBER;--->这是指MEMBER在结构体TYPE中的偏移。
const typeof( ((type *)0)->member ) *__mptr = (ptr); /
(type *)( (char *)__mptr - offsetof(type,member) );})
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
注意((type *)0)的使用。比如:((void *)0)();
((TYPE *)0)->MEMBER;--->这是指MEMBER在结构体TYPE中的偏移。
相关文章推荐
- 如何判断一个C++对象是否在堆栈上(通过VirtualQuery这个API来获取堆栈的起始地址,然后就可以得到答案了),附许多精彩评论
- 知道元素地址如何找到包含这个元素的结构体地址
- 如何通过一个结构体成员变量的地址找到该结构体的首地址?[备忘]
- 如何通过一个结构体成员变量的地址找到该结构体的首地址
- 如何通过一个结构体成员变量的地址找到该结构体的首地址?
- 如何通过一个IP和子网掩码得到网络地址和广播地址
- 如何通过传指针得到一个list对象列表的地址
- 整数数组中,每个元素均出现两次,除了一个元素例外,如何找出这个元素?能否设计一个线性时间的算法,且不需要额外的存储空间?
- 2014年去哪儿网笔试题--给定一个整型数组,对这个整型数组排序,使得按序拼接数组各元素得到的值最小。
- 内核中返回结构体首地址的函数container_of
- 如何向某网址Post信息,并得到CookieContainer以便以后直接通过验证
- 对于一个整数矩阵,存在一种运算,对矩阵中任意元素加一时,需要其相邻(上下左右),某一个元素也加一,现给出一正数矩阵,判断其是否能够由一个全零矩阵经过上述运算得到。
- 如何向某网址Post信息,并得到CookieContainer以便以后直接通过验证
- 输入任意一个数,得到1到这个数之间的1的个数
- 如何为workflow单据类型定义一个form属性,在notify中通过这个属性打开表单
- 面试题:给定一个有序的数组,如果往该数组中存储一个元素,并保证这个数组还是有序的,那么元素的存储的角标位如何获取。
- 通过一个地址加载html内容并把它加载到元素中
- 2014年去哪儿网笔试题--给定一个整型数组,对这个整型素组排序,使得按序拼接数组各元素得到的值最小
- java如何快速得到一个数组里面有多少种元素?
- 如何向某网址Post信息,并得到CookieContainer以便以后直接通过验证