Chinaunix首页 | 论坛 | 博客
  • 博客访问: 11468
  • 博文数量: 8
  • 博客积分: 260
  • 博客等级: 二等列兵
  • 技术积分: 90
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-18 22:33
文章分类

全部博文(8)

文章存档

2012年(2)

2011年(1)

2010年(5)

我的朋友

分类: C/C++

2012-03-06 15:59:21

1 container_of(ptr, type, member)
地址为ptr的成员member对应的type类型的结构的地址。
即 type S;  有 &(s.member ) == ptr;
那么有ptr,如何获得S

S = container_of(ptr, type, member)

  1. define container_of(ptr, type, member) ({ \
  2.     const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \
  3.     (type *)( (char *)__mptr - offsetof(type,member) );})

2. offset
man 3:    offsetof - offset of a structure member

3. offset
  1. #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)



阅读(410) | 评论(0) | 转发(0) |
0

上一篇:[gcc] attribute: visibility

下一篇:没有了

给主人留下些什么吧!~~