【发布时间】:2012-11-12 02:45:51
【问题描述】:
我们都知道c编程语言中没有动态类型。但是借助GCC中的typeof运算符,我们可以用c编程语言实现一些动态类型特性。最近我阅读了@987654322的源代码@,发现他们做得很优雅。
问题:
- 我们应该在哪种情况下使用
typeof技能? - 请给我更多的例子,尤其是在 Linux 内核中使用的技术。(
the container_of()marco 除外)
【问题讨论】:
-
很明显,您的第一个问题的一个答案是“仅当您从不期望代码由 GCC 以外的编译器编译时”。
-
是的,我在 Windows 和 Linux 中都使用 GCC。
-
对于原始问题中的第二句“我们可以实现一些......”,typeof 是一个在编译时评估的宏。动态类型是指在运行时评估的一些东西。您可能也可以在 c 中实现与 c++ 中存在的 RTTI 类似的东西。基本思想是有一个最大大小的变量来包含任何数据,然后在运行时检查它的字节以确定实际存储在其中的值的类型。例如分配等于 long double 的空间,然后在运行时识别它是否在运行时实际上包含 char、short、int、float 或 double。
-
@fayyazkl 非常有用的提示,谢谢!