Chinaunix首页 | 论坛 | 博客
  • 博客访问: 46044
  • 博文数量: 17
  • 博客积分: 387
  • 博客等级: 一等列兵
  • 技术积分: 150
  • 用 户 组: 普通用户
  • 注册时间: 2011-12-03 18:48
文章分类

全部博文(17)

文章存档

2012年(16)

2011年(1)

我的朋友

分类: LINUX

2012-05-07 07:58:46

一大早晨的又看到container_of。。。好吧,决定仔细看看吧
#define container_of(ptr, type, member) ({ \
        const typeof( ((type *)0)->member ) *__mptr = (ptr);
        (type *)( (char *)__mptr - offsetof(type,member) );})
发现不知道为什么要搞个__mptr出来,这不是多余么?直接
#define container_of(ptr, type, member) (type *)((char *)(ptr) - offsetof(type, member))
不就ok了?
用阉割版google搜了下,貌似都是讲一些什么typeof,offsetof之类的东西。。。
后来在stackoverflow上找到答案了(还好stackoverflow能上):
让编译器进行类型检查
我们的编程课程中从来没提过这一点,所以感觉很新鲜,这让我又想到了这个宏:
time_after,他用到了typecheck宏,这个宏也是九曲回肠,为得就是
类型检查
这个之前都接触过了,可现在竟然没有想到container_of里面类似的用法,果然天赋很差。。。
阅读(2492) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~