例子一
// 如果想声明一个变量而非定义它,就在变量名前添加关键字extern, 而且不要显示地初始化变量:
extern int i ; // 声明i 而非定义i
int j; // 声明并定义j
//任何包含了显示初始化的声明都是定义。我们给由关键字extern 标记的变量赋一个初始值,但是这么做也就抵消了extern的作用。extern语句如果包含初始值就不再是 声 明,而变成定义了:
extern double pi = 3.1416; //定义
例子二
//在一个文件里定义const,而在其他很多的文件中声明就使用它,对于const的变量不管是声明还是定义都添加extern关键字,这样只需要定义一次就可以了:
// file_1.cc定义并初始化了一个常量,该常量能被其他的文件访问
extern const int bufSize = fcn();
// file_1.h头文件
extern const int bufSize ;
// 与 file_1.cc中定义的bufSize是同一个
//file_1.cc定义并初始化了bufSize,以为这条语句包含了初始值所以是一次定义。
// file_1.h头文件中的声明也由extern 做了限定,其作用是指明bufSize并非本文件所独有,它的定义将在别处出现。