extern 修饰变量,分两种情况:
非const对象
当修饰一个非const对象时,它是一个全局变量,整个程序都可以访问。如:file1.cpp中定义,file2.cpp中使用。
//file1.cpp
int num;
//file2.cpp
extern int num;
num++;
const对象
当有const 修饰一个变量时,该对象默认为局部变量,所以要让该变量为全局,在前面加extern。如:需在file1.cpp中的变量加extern,file2.cpp中才可以引用,否则编译器在链接阶段会报undefined reference的错。
//file1.cpp
extern const int IP = 3.14;
//file2.cpp
extern const int IP;
综上: 非const变量默认为extern。要使const变量能够在其他的文件中访问,必须显式地指定它为extern.