在GCC中是否有一些'内置'扩展来获取C中表达式的类型名称? (作为字符串,即'const char *')。
答案 0 :(得分:2)
也许您可以查看TYPE_NAME macro这似乎是一个很好的起点。
答案 1 :(得分:2)
因为你说你想在运行时使用这个名字,所以这是一个明确的“不”。在C中,数据只是内存中的字节,根本没有内在类型。只有类型声明才能告诉编译器编译代码应该是什么样的类型。
然而,C编译器能够在编译时识别变量的类型是有意义的,这对于在单元测试框架中实现具有友好输出的相等断言这样的事情是很有意义的。我不能看到C有这样的东西。不过。
有人知道是否仍在开发新版本的ANSI C规范吗?编译时类型识别将是一件很棒的事情。也许内在类型的整数常量和内在类型或定义类型的类型相等测试?
答案 2 :(得分:1)
首先。您希望在运行时获取C表达式的类型。问题是类型在编译期间被擦除,并且机器代码几乎没有类型,它不包含除8/16/32/64位整数和32/64/80位浮点数之外的任何内容(在x86的情况下)。类型是C的编译时实体(C ++可能会在运行时保留有关类型的一些信息,因为它具有面向对象的特性,它将类与类关联起来,但很难跟踪POD和基元类型)
二。您需要一种 C表达式。有时在运行时很难说出给定的C表达式是什么。
因此,无法在运行时获取C表达式类型。