2013-05-30 87 views
0
char s[10]="welcome"; 

这里例如&schar(*)[2]类型。 无论如何在C中找到这样的变量的类型?c中变量的类型

+0

你是什么意思“查找类型”?你有没有试过http://cdecl.org? –

+0

如果我们尝试在c中打印一个带有其他格式说明符的变量,它会给出警告,因为变量是“char *”类型的变量,但是您正在尝试打印为“int”而不进行转换。同样,有没有找到变量类型的正确方法? – user1762571

+7

@Patashu:不,数组不是“或多或少的指针”。我建议你阅读[comp.lang.c FAQ](http://www.c-faq.com/)的第6部分。 –

回答

0

编译器知道,但编译完成时会丢弃该信息。你不能以某种方式在运行时询问它是什么类型的变量的文本描述。没有方法返回字符串“char(*)[2]”

要做到这一点,您必须与C编译器集成或编写C编译器并在运行时通过它运行代码。

+0

这在技术上是正确的,除了'typeof'之外的扩展。 –

+0

@ RichardJ.RossIII你的答案比较好 - 我可能会在几分钟内删除我的。 – xaxxon

1

大多数*编译器支持typeof运算符,它可以非常方便。这基本上等同于C++的decltype,所以你可能需要一个宏来把它变成有用的东西,像一个字符串:

#define _STRINGIFY(arg) #arg 
#define STRINGIFY(arg) _STRINGIFY(arg) 

*:大多数编译器是铛,GCC,我相信MSVC。