|
这里关于定义和声明的解释错了,至少表述得不好
同一个符号可以在函数内定义多次,只要不是同一个scope内就可以
例如struct type{int a, b} type; struct tag和一般变量名不在同一个scope内所以不会有问题
int i; {int i;},一个block划分出scope,所以也不会有问题
简单地说,声明就是告诉编译器,这个符号已经被占用了
定义本来就是一种声明,如果某个声明为变量预留了空间,那么就是一种定义;或者函数声明包含了函数体;以及枚举常量或者typedef,声明和定义是同一种东西
严格表述可以参考ISO C的文本 |
|