C语言中typedef的语法和语法

Sum*_*Tea 8 c typedef

我在C语言中遇到了typedef关键字的问题.

在我的程序中,我使用以下代码:

typedef int* a[10];

int main(){
 int a[10];
} 
Run Code Online (Sandbox Code Playgroud)

他们运作良好.但是为什么变量和共享相同名称的类型之间没有冲突?

问候.

Eli*_*sky 6

C标准说(第6.2.1节 - 标识符的范围):

标识符可以表示对象; 功能; 标签或结构,联合或枚举的成员; 一个typedef名称; 标签名称; 一个宏名; 或宏参数.相同的标识符可以表示程序中不同点的不同实体.

K&R2说(A.11.1 - 词汇范围)

标识符属于几个不互相干扰的名称空间; 如果用途位于不同的名称空间中,则相同的标识符可用于不同的目的,即使在相同的范围内也是如此.这些类是:对象,函数,typedef名称和枚举常量; 标签; 结构或联合的标签和枚举; 和每个结构或工会的成员个别.

我必须承认这让我感到困惑.阅读第二个引用似乎变量名称和typedef-ed类型应该发生冲突.


tan*_*ius 6

请参阅msdn C语言参考:

Typedef名称与普通标识符共享名称空间(有关更多信息,请参阅名称空间).因此,程序可以具有相同名称的typedef名称和本地范围标识符.

  • @Eli:`{int x; {float x;}}` (3认同)