我可以从C中的变量中检索数据类型吗?
有办法在C中获取数据类型吗?
例如:
int foo; if(foo是int) { // 做一点事 }
或类似的东西:
if(typeof(foo)== typeof(int)) { // 做一点事 }
提前致谢。
这称为类型内省或reflection,C语言不支持。 您可能必须编写自己的reflection库,这将是一项重大的工作。
GCC中有一个类型的扩展,但它不在ANSI C中: http : //tigcc.ticalc.org/doc/gnuexts.html#SEC69
foo
是一个int
的事实绑定到名称foo
。 它永远不会改变。 那么这样的测试怎么会有意义呢? 它可能有用的唯一情况是在宏中,其中foo
可以扩展为不同类型的变量或表达式。 在这种情况下,您可以查看我过去与该主题相关的一些问题:
使用宏进行类型generics编程:确定类型的技巧?
确定具有正确返回类型的原型的存在
唯一一次你不知道类型的是foo的类型是否由typedef定义 – 如果是这种情况,你的例子应该反映它。 为什么你需要依赖于类型的东西? 可能有办法解决您的实际问题,但您没有提出实际问题。