container_of原来这么简单

 时间:2024-10-14 22:04:02

1、这个宏定义在include/linux/kernel.h里面了#define container_of(ptr, type, member) ({ \const typeof( ((type *)0)->member ) *__mptr = (ptr); \(type *)( (char *)__mptr - offsetof(type,member) );})这个宏是做什么的? 他可以根据结构体的成员变量获取所在结构体的首地址。

2、话说有个结构体a, 地址表示为 &a, 这个结构体里面有个成员叫b地址表示为 &b, 现在请问 “ &b - &a ” 表示什么含义?答案:偏移量,成员变量的首地址相对于结构体首地址的偏移量。如果 &a 碰巧又等于0 ,那么 &b - &a = &b - 0 = &b这样话,上面的答案就变成了:成员变量的首地址,就是偏移量这个说的就是 offsetof的作用

3、现在我们有了偏移量,再拿到成员变量的实际地址,减去上面说的偏移量,不就是当前结构体的首地址了吗!?

  • 炉石传说泰兰德怎么获得
  • 一些想去的地方——大理,挖色镇
  • 解决安装错误Command line option syntax error
  • 大侠式人生2剑法攻略
  • 热门搜索
    求嗣是什么意思 湖南湖北以什么湖为界 icp是什么 hf是什么意思 四书五经指的是什么书 腿抽筋什么原因引起的 sweet是什么意思中文 dtu是什么 什么游戏 soul什么意思