Chinaunix首页 | 论坛 | 博客
  • 博客访问: 121442
  • 博文数量: 41
  • 博客积分: 2564
  • 博客等级: 少校
  • 技术积分: 455
  • 用 户 组: 普通用户
  • 注册时间: 2007-09-20 19:17
文章分类

全部博文(41)

文章存档

2009年(41)

我的朋友

分类: C/C++

2009-03-27 09:55:57

通过结构体中某一成员的地址得到结构体的起始地址

    Linux内核里面有那么一个宏:

#define list_entry(ptr, type, member) \

((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member)))


初次看到的时候觉得很怪异,后来仔细看发现这个宏可以通过结构体成员得到结构体的起始地址~方法很巧妙!

    由于Linux内核中的链表结构是嵌入到链表节点之中的,所以需要由链表的指针取得该指针所对应的链表节点地址。
阅读(862) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:Linux 内核的同步机制,第 1 部分

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