dram.me

container_of 中的 __mptr

在了解 Linux kernel 的链表实现时,看到了container_of,具体的功能和代码原理就不在这多说了,网上有比较多的资料,比如 这篇 就挺不错。

这是要说的是在container_of__mptr的作用。就和 lisan 06年在 CU 上问的 问题 一样,我也有这个疑问,感觉__mptr有些多余。

经过一番搜索,我可能找到了 答案

__mptr在这是作为一个类型检查,通过将 ptr 赋值给__mptr,如果 ptr 和__mptr类型不同,则会有警告信息,当然void *除外。