当我浏览 Linux 内核时,我发现了一个 container_of
宏,它的定义如下:
#define container_of(ptr, type, member) ({ \
const typeof( ((type *)0)->member ) *__mptr = (ptr); \
(type *)( (char *)__mptr - offsetof(type,member) );})
我知道 Container _ of 是做什么的,但是我不明白的是最后一句话,也就是
(type *)( (char *)__mptr - offsetof(type,member) );})
如果我们按以下方式使用宏:
container_of(dev, struct wifi_device, dev);
最后一句的相应部分是:
(struct wifi_device *)( (char *)__mptr - offset(struct wifi_device, dev);
看起来什么都没做。 有人能填补这里的空缺吗?