页的有关跨文件共享常数变量,像这样C++入门第五版会谈60使用extern在文件间共享const时,为什么extern需要定义?
//file_1.cc
extern const int bufSize = fcn();
//file_1.h
extern const int bufSize;
当将BUFSIZE定义,什么是对file_1.cc的extern的目的是什么?我知道file_1.cc会定义它,但是同一本书的第45页说,为变量提供一个初始化器覆盖了extern,那么为什么在const的定义中必须有extern?
与C不同,C++中的const默认为内部链接,在这种情况下,就好像它已被声明为静态一样。 extern被要求覆盖这个。 – 2014-10-10 01:13:03
因此,extern会将变量更改为外部链接,从而允许跨文件共享该变量? – Matt 2014-10-10 01:16:14
是的。另一种方法是仅在不带外部头的情况下声明const。对于一个简单的const(不是一个类)给定一个文字(例如'const int size = 5;'),这很好。但是,如果头文件中的常量是从函数初始化的,则将为包含头文件的每个源文件再次调用该函数,效率低下。 – 2014-10-10 01:18:05