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

标签 c type-conversion

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

例如,我声明 char y = 1;和函数 int SomeFunction (int)。然后我会将 y 传递给 someFunction,它会被转换为 int 并最终返回 int

我知道这是因为函数声明。不过,我想确认在 someFunction 中,变量实际上是 int 类型,并且从 someFunction 返回的变量也是一个 int.

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

最佳答案

在您的代码中,您可以依赖这样一个事实,即您收到的类型对应于它们的声明方式。如果不是这种情况,您将无法编写任何重要的程序。

C 中的类型信息仅在编译时可用。在运行时,这些信息都不存在,因此没有标准的内置方法,例如,告诉什么类型的对象隐藏在随机指针后面。
如果您需要此类信息,请查看您的编译器是否具有扩展(我不知道是否有),或使用为此提供基础结构的框架(我相信 glib 有类似的东西)。
如果您真的需要它,也可以自己动手。

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

关于c - 如何在运行时检查 C 中变量的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8631159/

相关文章:

c - 如何在 C 中将一个字符中的两个数字相加?

java - sql BIT 转 Java

c - 通过snprintf将uint8_t/uint16_t数据类型转换为char[]

c - 什么时候需要 curl_global_init() ?

c - 终止文本字符

c - 如何对位置未知的命令使用 execv?

c - unsigned 和 int 陷阱

c - 为什么这些构造使用前后递增的未定义行为?

c - 指针和类型转换

c - 如何在 C 中将 48 位字节数组转换为 64 位整数?