如何在运行时检查C中变量的类型?

时间:2011-12-25 19:27:10

标签: c type-conversion

是否有可能在整个代码中的任何给定点检查变量的类型?

例如,比方说,我宣布char y = 1;和功能int SomeFunction (int)。然后,我会将y传递给someFunction,它会转换为int,最终会返回int

我知道这是因为函数声明。不过,我想确认在someFunction内,变量实际上是int类型,而someFunction返回的变量也是int

这可以在C中完成,还是应该依赖函数声明? C编程语言是否提供了在运行时检查变量类型的任何机制?

2 个答案:

答案 0 :(得分:6)

在您的代码中,您可以依赖于您所交付的类型与其声明方式相对应的事实。如果不是这样,你就不能写任何非平凡的程序。

C中的类型信息仅在编译时可用。在运行时,没有任何信息存在,因此没有标准的内置方式,例如,告诉什么类型的对象隐藏在随机指针后面。
如果您需要这种信息,请查看您的编译器是否有扩展(我不知道是否有),或者使用为其提供基础结构的框架(glib具有我认为的那样)。登记/> 如果确实需要它,请自行滚动。

或者使用C ++,它确实有一些运行时类型信息支持,一般来说是一个更复杂的类型系统,但这是一种完全不同的语言。

答案 1 :(得分:0)

C类型主要存在于编译时。

你可以提高你的编译器警告级别以获得更好的检查(EG gcc -ansi -pedantic -Wall),但我相信仍会根据需要强制执行某些操作。

对于某些任务,您可以使用union进行手动类型管理,但在C中,通常最好只依靠编译器进行类型检查。