1.
extern
: 声明变量,在一个文件里声明以后,表示该变量要去其它文件找变量,告诉编译器:“
你现在编译的文件中,有一个标识符虽然没有在本文件或本文件当前位置中定义,但是它是在别的文件中或本文件其它位置定义的全局变量,你要放行
!”。声明变量:extern type variable; (有extern,无初始化值);声明变量则不分配内存;如:extern int a; -> 声明; int a; -> 定义;
头文件就相当于一些extern声明的汇总。
example:
A.cpp:
int a = 10;
B.cpp:
#include <iostream>
using namespace std;
int main()
{
extern int a;
cout << a << endl;
return 0;
}
运行结果:10
B.cpp:
#include <iostream>
using namespace std;
int main()
{
int a; //此处不再是声明,而是在此处定义,不会去寻找其它地方的定义,会申请内存空间
cout << a << endl; // error: 使用未初始化的局部变量
return 0;
}