日期:2014-05-16  浏览次数:20738 次

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还真有玄机。