C90中的Linux Kernel container_of宏和通用容器

问题描述 投票:3回答:1

是否可以在纯C90中实现container_of宏?我不确定如何执行此操作,因为内核实现取决于GCC Hacks,例如typeof运算符。

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

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

c data-structures linux-kernel typeof c89
1个回答
10
投票

typeof的内核定义中使用container_of()仅用于编译时类型检查-它确保传递的ptr确实是与member相同类型的指针。可以通过进行类型检查将其修改为完全ANSI C:

© www.soinside.com 2019 - 2024. All rights reserved.