温馨提示×

c语言containerof的用法是什么

小亿
84
2023-12-06 23:32:52
栏目: 编程语言
C语言开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

在C语言中,container_of是一个宏,用于获取包含给定成员的结构体的指针。

container_of的用法如下:

#define container_of(ptr, type, member) ({ \
    const typeof(((type *)0)->member) *__mptr = (ptr); \
    (type *)((char *)__mptr - offsetof(type, member)); })

其中,ptr是一个指向成员的指针,type是包含该成员的结构体类型,member是成员名。

container_of宏通过将ptr的地址减去member在结构体中的偏移量来计算结构体的起始地址,并将其转换为type类型的指针。

这个宏通常用于在数据结构中获取结构体的指针,例如在链表中遍历节点时,可以使用container_of宏获取包含节点的结构体的指针,然后对结构体进行操作。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读:c语言scanf的用法是什么

0