(1)定义声明(定义)与引用声明(声明)
定义给变量分配空间,声明不给变量分配空间
extern告诉编译器某个变量的定义在其他文件
// 引用声明使用关键字extern,且不进行初始化;
// 否则,声明为定义,导致分配存储空间
double up; // 定义
extern int blem; // blem defined elsewhere
extern char gr = 'z'; // 定义,因为进行了初始化
(2)默认情况下,const 全局变量的链接性是内部的,使用extern可以将其链接性变为外部(但必须初始化)
const int fingers = 10; // 链接性内部,仅供本文件使用
extern const int states = 50; // 链接性外部
(3) extern “C”
C\C++混合编程中,extern “C” 告诉C++编译器这段代码要按C标准编译,以尽可能地保持C++与C的兼容性。