如果上面的例子写成extern int top = -1;则编译器会报错。 这个的本质原因是因为这个语句也是一个定义(definition)吧
是的
"Previous Linkage的定义是:这次声明的标识符具有什么样的Linkage取决于前一次声明,这前一次声明具有相同的标识符名,而且必须是文件作用域的声明,如果在程序文件中找不到前一次声明(这次声明是第一次声明),那么这个标识符具有External Linkage。" -------------------------------------- "这前一次声明具有相同的标识符名,"这句话是不是有问题?“这前一次声明”是什么意思?
比如 extern int i; int i; extern int i;是int i;的前一次声明,有什么不好理解的呢?
如果您有建设性意见,哪怕只是纠正一个错别字,也请不吝赐教,您留下的姓名和email将会出现在本书前言的致谢中。再次感谢您的宝贵意见!