Tag: 设计师

C原型范围

我了解到了 在函数原型(不是函数定义的一部分)中的参数声明列表中声明标识符的类型说明符,标识符具有函数原型作用域,它终止于函数声明符的末尾。 请参阅下面提到的C程序。 void fn (struct st {int a;} a, struct st b) ; struct st obj ; 编译器会立即发出错误,因为’obj’大小未知(或)struct st不是’type’。 那就对了! 结构’struct st’的声明在原型声明中结束。 我相信原型有这个限制因为我们也可以在原型声明中使用一些变量名。 这些名称可能与同一范围内的变量(与函数原型的变量)冲突。 如下。 void fn (int a) ; int a ; 因此,为了允许上述声明,原型的范围是有限的。 (如果我错了,请纠正我) 但是,对于原型声明,参数变量名称没有用。 那么,为什么它是“狭隘的范围”? 拥有参数变量名称有什么意义? 什么是语言设计者(或)规范对此的想法?