extern表示引用变量。
假设h1.h
定义了如下语句:
int a = 33; extern int a;
这是声明了全局变量a
,至少要在其他文件定义一次,否则无法使用。
test.cpp文件如下定义:
int main() { //a = 14; cout << a << endl; cin.get(); return 0; }
a = 33
如果h1.h
只有声明语句:
extern int a;
test.cpp文件如下定义:
int main() { a = 14; cout << a << endl; cin.get(); return 0; }
那么将报错,因为无法访问a变量,h1.h
仅是声明了导出变量a
。我们必须在其他地方对其进行赋值。
比如:cx.cpp
extern int a = 55;
需要注意的是,对extern变量只能赋值一次。
如果定义一个静态的文件级变量,那么它将隐藏全局变量:
static int a = 555; int main() { extern int a; cout << a << endl; cin.get(); return 0; }
在C++
中,const
变量默认链接性为内部。这与C
不同。
若要将其变为外部链接,可以使用extern
关键字。