gpt4 book ai didi

c - C90 中的 Linux 内核 container_of 宏和通用容器

转载 作者:太空狗 更新时间:2023-10-29 15:53:26 24 4
gpt4 key购买 nike

是否可以实现 container_of纯 C90 中的宏?我不确定该怎么做,因为内核实现取决于 GCC Hacks例如 typeof 运算符。

我问是因为我想在 C90 中实现一个类似于内核的 linked list 的通用容器.我想到的实际容器是一个序列集,类似于您可能从 Boost MultiIndex 获得的内容。 .

最佳答案

typeof的使用在 container_of() 的内核定义中仅用于编译时类型检查 - 它确保传递的 ptr实际上是指向与 member 相同类型的指针.可以将其修改为完全 ANSI C,但需要进行此类型检查:

#define container_of(ptr, type, member) ((type *)((char *)ptr - offsetof(type, member)))

( offsetof()<stddef.h> 中)

关于c - C90 中的 Linux 内核 container_of 宏和通用容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5594530/

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