首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

container_of疑义

2012-08-09 
container_of疑问#define container_of(ptr, type, member) ({\const typeof( ((type *)0)-member ) *__m

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

热点排行