我可以从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定义 – 如果是这种情况,你的例子应该反映它。 为什么你需要依赖于类型的东西? 可能有办法解决您的实际问题,但您没有提出实际问题。