C++ primer 之 extern
- 什么是声明
- 什么是定义
- 两者有什么区别
- ertern的作用
什么是声明
就是使得名字为程序所知,一个文件如果想使用别处定义的名字就必须包含对那个名字的声明。
什么是定义
负责创建与名字关联的实体。
两者有什么区别
变量声明和声明都规定了变量的类型和名字,但是定义还申请了存储空间,也可能会为变量赋一个初始值。
ertern的作用
如果想声明一个变量而非定义它,就在变量名前添加关键字(extern),而且不要赋初始值。
extern int i; //声明i而非定义i
int j; // 声明并定义j
举个栗子
创建 a.cpp 和 b.cpp
a.cpp代码如下所示:
b.cpp代码如下所示:
编译成功显示 n = 10
注:在函数体内部,如果试图初始化一个由extern关键字标记的变量,将引发错误
再举个栗子 在上面a.cpp的基础上修改一下
b.cpp 不变
编译运行,报错
报错原因猜测:,a.cpp中本来n是内部定义的变量,只在局部起作用,但是又在前面加了一个extern,使其与外部又可以联系,产生了矛盾。(如有错误,欢迎大佬批评指正)