威县网站建设代理价格有域名 如何免费建设网站
web/
2025/9/30 8:38:58/
文章来源:
威县网站建设代理价格,有域名 如何免费建设网站,做网站字体规范,郑州网站优化公司从kernel里面抠出的一些与宏container_of有关的代码#xff0c;如下#xff1a; 1、此宏作用是从结构体的某元素#xff08;member#xff09;出发#xff0c;得到结构体的首地址#xff1b; 2、container_of的参数解释
#xff08;1#xff09;type#xff1a;指的是…从kernel里面抠出的一些与宏container_of有关的代码如下 1、此宏作用是从结构体的某元素member出发得到结构体的首地址 2、container_of的参数解释
1type指的是包含member这个成员元素的结构体所对应的类型即我们要获取首地址的那个结构体所对应的类型
2member指的是结构体中的某个元素的名字我们就是从这个元素出发得到结构体的首地址。注意这个元素在内核中可能也是结构体。
3ptr指向结构体中member这个元素的指针。 3、offsetof的解释
1格式这样看比较明显-优先级比高#define offsetof(TYPE, MEMBER) ( (size_t) ( (TYPE *)0 )-MEMBER ) 首先(TYPE *)0 然后(TYPE *)0 -MEMBER接着(TYPE *)0 -MEMBER最后强制类型转换为size_t类型。 2进一步解释 即先将0地址强制转换为要获取首地址的那个结构体的指针然后获取元素member进而取其地址。由于结构体的指针指向地址为0那么元素member的地址就是member元素偏移结构体首地址的偏移量。由于此时偏移量是以地址形式就一个数字或者说指针呈现的我们要把它改成int类型所以来一个强制类型转换。 4、container_of解释
1const typeof( ((type *)0)-member )* __mptr (ptr)
首先获取结构体元素member的的类型然后定义一个指向此类型的指针_mptr并赋值为ptr
2(type *) ( (char *)__mptr - offsetof(type, member) )
首先将_mptr强制转化为char*类型然后减去偏移量最后强制转换为结构体类型指针即返回了结构体首地址。
这里之所以转换为char*类型是因为减去偏移量时偏移量是多少那就减去多少字节。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/84355.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!