char s[10]="welcome";
这里例如&s
是类型char(*)[2]
。无论如何在C中找到这样的变量的类型吗?
大多数* 编译器都支持typeof
运算符,这非常方便。它本质上等同于 C++ 的decltype
,因此您可能需要一个宏来将其转换为有用的东西,例如字符串:
#define _STRINGIFY(arg) #arg
#define STRINGIFY(arg) _STRINGIFY(arg)
*:大多数编译器都是 clang,GCC,我相信 MSVC。
编译器知道但当编译完成时该信息被丢弃。您不能以某种方式在运行时询问它是什么类型的变量的文本描述。没有返回字符串“char(*)[2]”的方法
为此,您必须与 C 编译器集成或编写 C 编译器并在运行时通过它运行您的代码。