在 C 语言(不是 C + +/C #)中,如何检查变量是否属于某种类型?
例如,这样的东西:
double doubleVar;
if( typeof(doubleVar) == double ) {
printf("doubleVar is of type double!");
}
或者更一般的: 我如何比较两种类型,使 compare(double1,double2)
的计算结果为 true,而 compare(int,double)
的计算结果为 false。我也想比较不同组成的结构。
基本上,我有一个对类型为“ structa”和“ structb”的变量进行操作的函数。我想用“ struct a”变量做一件事,用“ struct b”变量做另一件事。因为 C 不支持重载,而且 void
指针丢失了它的类型信息,所以我需要检查类型。顺便说一句,如果不能比较类型,那么使用 typeof
操作符有什么意义呢?
Sizeof 方法对我来说似乎是一个实用的解决方案。谢谢你的帮助。我仍然觉得有点奇怪,因为类型在编译时就已经知道了,但是如果我想象一下我能看到的机器中的进程,为什么信息不是按类型存储的,而是按字节大小存储的。除了地址,大小是唯一真正相关的东西。