读书人

container_of疑义

发布时间: 2012-08-09 15:59:21 作者: rapoo

container_of疑问
#define container_of(ptr, type, member) ({ \
const typeof( ((type *)0)->member ) *__mptr = (ptr); \
(type *)( (char *)__mptr - offsetof(type,member) );})

第二行的作用是什么,去掉会可能引起什么样的后果?
“-”操作会影响减数获被减数的值吗?

[解决办法]
({语句组}) 是GCC的扩展,返回语句组里最后一个语句的值。
这里也是返回相减后的值


确实可以简化成1行搞定,申请__mptr这个临时变量意义不大。原因我也不知,
大概 (__mptr - 偏移) 比 (ptr - 偏移) 更容易让人理解吧

[解决办法]
http://bbs.chinaunix.net/thread-3618696-1-1.html

大概如那个lz所说吧

你的眼光非常敏锐,今天仔细一看container_of还真有玄机。

读书人网 >UNIXLINUX

热点推荐