是否有可能在整个代码中的任何给定点检查变量的类型?
例如,比方说,我宣布char y = 1
;和功能int SomeFunction (int)
。然后,我会将y
传递给someFunction
,它会转换为int
,最终会返回int
。
我知道这是因为函数声明。不过,我想确认在someFunction
内,变量实际上是int
类型,而someFunction
返回的变量也是int
。
这可以在C中完成,还是应该依赖函数声明? C编程语言是否提供了在运行时检查变量类型的任何机制?
答案 0 :(得分:6)
在您的代码中,您可以依赖于您所交付的类型与其声明方式相对应的事实。如果不是这样,你就不能写任何非平凡的程序。
C中的类型信息仅在编译时可用。在运行时,没有任何信息存在,因此没有标准的内置方式,例如,告诉什么类型的对象隐藏在随机指针后面。
如果您需要这种信息,请查看您的编译器是否有扩展(我不知道是否有),或者使用为其提供基础结构的框架(glib
具有我认为的那样)。登记/>
如果确实需要它,请自行滚动。
或者使用C ++,它确实有一些运行时类型信息支持,一般来说是一个更复杂的类型系统,但这是一种完全不同的语言。
答案 1 :(得分:0)
C类型主要存在于编译时。
你可以提高你的编译器警告级别以获得更好的检查(EG gcc -ansi -pedantic -Wall),但我相信仍会根据需要强制执行某些操作。
对于某些任务,您可以使用union进行手动类型管理,但在C中,通常最好只依靠编译器进行类型检查。