当前位置:  技术问答>linux和unix

container_of疑问

    来源: 互联网  发布时间:2017-03-04

    本文导语:  #define container_of(ptr, type, member) ({                        const typeof( ((type *)0)->member ) *__mptr = (ptr);                (type *)( (char *)__mptr - offsetof(type,member) );})   第二行的作用是什么,去掉会...

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

    
 
 

您可能感兴趣的文章:

  • Linux内核的 container_of宏的疑问?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 宏container_of
  • 求解释,container_of()宏 iis7站长之家
  • 請教關於container_of的實現原理
  • 求解释,container_of()宏


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3