一般变量:如我在file_1.cpp中定义了一个变量,在file_2.cpp中我想使用它,那么我只需要在file_2.cpp中用extern声明它就可以用了:
// file_1.cc int counter; // definition // file_2.cc extern int counter; // uses counter from file_1 ++counter; // increments counter defined in file_1 const变量:除非特别说明,const变量只作用与file1中,不能被其他文件访问。
此时若还想在file2中使用它,那么在file1中也要声明它为extern的。
// file_1.cc
// defines and initializes a const that is accessible to other files
extern const int bufSize = fcn();
// file_2.cc
extern const int bufSize; // uses bufSize from file_1
// uses bufSize defined in file_1
for (int index = 0; index != bufSize; ++index)
// ...
本程序中,file_1.cc 通过函数 fcn 的返回值来定义和初始化 bufSize。 而 bufSize 定义为 extern,也就意味着 bufSize 可以在其他的文件中使用。 file_2.cc 中 extern 的声明同样是 extern;这种情况下,extern 标志着 bufSize 是一个声明,所以没有初始化式。
非 const 变量默认为 extern。要使 const 变量能够在其他的 文件中访问,必须地指定它为 extern。