extern 关键字
看完了C++ Primer的第一部分,想写个博客巩固一下学到的知识,因为是第一次写,有很多不足,还望指正。
两个功能
1.extern可以作为链接指示符,即让函数按C的规则编译链接(默认是按C++规则编译链接):格式如:extern "C" int fuc() {};
此外复合形式也是可以的:
extern "C" {
int fuc_1(int a);
int fuc_2(int b);
}
extern是作用于声明,不是定义,所以不用分配空间。(注意是“C”大写C)
2. 声明函数或全局变量的作用范围,如在test.cpp中定义a_1int a_1=3;
而在同一个文件中定义的main.cpp中
#include <iostream>
using namespace std;
extern int a_1;
int main() {
cout << a_1 << endl;
return 0;
}
此时main.cpp中a_1的值为3。
此外,由于const对象被设定为仅在文件内有效,当多个文件中出现了同名的const变量时,其实等同于在不同文件中分别定义了独立的变量。如何实现在一个文件中定义const,而在其他多个文件中声明并使用它?
解决的办法是,对于const变量不管是声明还是定义都添加extern关键字,这样只需定义一次就可以了:
//file_1.cc定义并初始化了一个常量,该常量能被其他文件访问
extern const int bufSize=fcn();
//file_1.h
extern const int bufSizel//与file_1.cc中定义的bufSize是同一个
和非const变量的操作方式有所不同。