#include<stdio.h>
extern int temp;//extern int temp=0;
int main(void)
{
temp=1;
printf("%d\n",temp);
return 0;
}
为什么C编译时,temp没有初始化会编译出错:unresolved external symbol "int temp";
extern只是一个声明,声明你现在这个模块将要使用一个名称是什么什么的东西,而这个东西的定义不在本模块中,之所以要在本模块中存在这样的声明,就是告诉编译器遇到这种东西应该到别的模块中搜寻定义。你看的资料基本正确,但extern int temp = 0这样是多余的,int temp = 0已经是定义,不需要再extern,相反,在别的模块文件中extern int temp才会使用此处的temp,自己是不需要extern int temp的,而如果你在别的模块又来一次extern int temp = 0,就会出现重复定义错误。