为什么在vc6下. 1,2两句会出现重复定义错误.void main(){extern int i; //1int i; //2}而这样就不会出错了,不是我不看书,而是?]看明白.extern int i; //1int i; //2void main(){}

热心网友

extern 是外部变量其生命周期在整个工程内,所以应该在main外声明而在main内声明,编译后会当成一个生命期在main内的全局变量,他与你定义的int i作用域是同样的,这时这两个i是同一个类型,用同一块存储空间,因此出错.而放到main外面,是说明要引入一个外部变量,它独立占用一块存储空间,与你定义的int i 不在同一个空间,因此不会出错.