是否有可能实施容器的 http://lxr.linux.no/linux+*/tools/perf/util/include/linux/kernel.h#L18纯C90中的宏?我不确定如何做到这一点,因为内核实现取决于海湾合作委员会黑客 http://www.ibm.com/developerworks/linux/library/l-gcc-hacks/index.html如那个typeof
操作员。
我这样问是因为我想在 C90 中实现一个类似于内核的通用容器链表 http://lxr.linux.no/#linux+v2.6.38/include/linux/list.h#L24。我正在考虑的实际容器是一个排序集,类似于您可能从中获得的容器提升多重索引 http://www.boost.org/doc/libs/1_46_1/libs/multi_index/doc/index.html.
指某东西的用途typeof
在内核定义中container_of()
仅用于编译时类型检查 - 它确保通过的ptr
实际上是一个指向相同类型的指针member
。可以将其修改为完全 ANSI C,但需要进行此类型检查:
#define container_of(ptr, type, member) ((type *)((char *)ptr - offsetof(type, member)))
(offsetof()
is in <stddef.h>
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)