
泻药,这种问题最折磨人了,说一下我的看法不对勿喷,extern 有很多功能,如果 顺序是 int a=2; extern int a;这时候编译器理解extern为引用变量,所以当int a=2;改为static int a=2;
不会出现问题,但是顺序变为 extern int a;static int a=2;extern的职能就是声明变量a,声明了变量a,(区别正常的int a,定义)u有声明就需要有定义,但后后面却定义了static int,所以编译认为a变量只有申明没有定义,自然报错了。