Rob*_*nes 3 c typeof c89 linux-kernel data-structures
是否可以在ANSI-C中实现container_of宏?我不确定如何在ANSI-C中执行它,因为内核实现依赖于GCC Hacks,例如typeof运算符.
我问,因为我想在ANSI-C中实现类似于内核链接列表的通用容器.我想到的实际容器是一个类似于Boost MultiIndex的序列集.
caf*_*caf 10
采用typeof的内核定义container_of()仅仅是编译时类型检查-这将确保在传递ptr确实是一个指针的类型相同member.它可以修改为完全ANSI C,代价是此类型检查:
#define container_of(ptr, type, member) ((type *)((char *)ptr - offsetof(type, member)))
Run Code Online (Sandbox Code Playgroud)
(offsetof()在<stddef.h>)
| 归档时间: |
|
| 查看次数: |
1858 次 |
| 最近记录: |