为了支持分离式编译,c++语言将声明和定义区分开来
声明(declaration) 是为了让程序为程序所知,一个文件如果想使用别处定义的名字则必须包含对那个名字的声明
定义(definition) 是创建了与名字有关的实体,及分配空间或可能为变量附上初始值
变量声明规定了变量的类型和名字,在这一点上定义与之相同
c++中,在变量名前添加extern关键字,并且不显式的初始化变量,就是声明而非定义一个变量:
extern int i; // 声明i而非定义它
int j; // 声明并定义j
extern int m = 2; // 定义
在函数体内部,试图初始化一个由extern关键字标记的变量将会引发错误。
Note: 变量只能被定义一次,但可以被声明多次
摘自: CPP Primer