【C++】2.2.2 变量声明和定义的关系
因为在生活中,可能需要不同的人编写不同的文件,或者一段程序需要拆分成很多不同的模块,可能一个文件中需要用到另一个文件中的变量。这就需要分离式编译,因此C++使用分离式机制,将声明(declaration)和定义区分开来。
一个文件如果使用在别的文件中定义的变量,就在该文件中就必须包含对该变量的声明。
变量声明规定了变量的类型和名字,而定义在规定变量类型和名字的同时,还会申请存储空间,定义还可能会给变量初始化。
int i; //是未显式初始化的定义
extern int i; //声明
int i = 0; //定义
extern int i = 0; //定义
int fun()
{
extern int i = 0; //错误
return 0;
}
因此,如果想声明一个变量而不是定义他,可以用extern关键字标记。最好不要给extern标记的变量赋初始值,这样会抵消它的作用,会让这个变量变成定义。另外,也不要在函数体内部对extern 标记的变量初始化。
变量只能被定义一次,但是可以被声明多次。