gpt4 book ai didi

macros - container_of宏的定义

转载 作者:行者123 更新时间:2023-12-04 18:11:24 24 4
gpt4 key购买 nike

而不是将container_of定义为:

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

为什么这不能简单地工作:
#define container_of(ptr, type, member) ({ \
(type *)( (char *)(ptr) - offsetof(type,member) );})

定义中第一行的用法是什么?

最佳答案

它增加了某种类型的安全性。对于您的第二个版本,我可以将任何内容传递给ptr,并且可以正常编译。对于内核版本,如果传递的ptr指针与type.member类型不匹配,您至少会得到警告。

关于macros - container_of宏的定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13450292/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com