分离式编译机制允许将程序分割为若干个文件,每个文件可以被独立编译。这种方式必须解决一个问题,即如何在多个文件之间共享代码?(例如一个全局变量,在一个一个文件中被定义,如何在其他文件中被使用?)
为了解决这个问题,即多个文件中使用同一个变量,C++将声明和定义分开:
(1)变量在其中一个文件中定义,且只能在一个变量中定义
(2)在其他需要使用的文件中,必须对该变量进行声明
声明(declaration):使得名字为程序所知,一个文件如果想使用别处定义的的名字,必须要包含那个名字,通过
extern int i;
定义(definition):负责创建与名字关联的实体
int i;
int i = 2;
声明与定义的相同之处:规定了变量的类型和名字
声明与定义的不相同之处:
(1)定义时为变量申请了存储空间,声明不会
(2)定义时,可能为变量赋一个初始值,声明不会
注意:任何包含了显示初始化的声明即成为定义
extern int i = 2;