extern在C++通常用来声明一个全局变量:
a.h
extern int a;
a.cpp
int a = 100;
main.cpp
#include <iostream>
extern int a;
int main()
{
std::cout << a << std::endl; //输出100
}
在a.h中使用extern声明一个全局变量a,a.cpp中定义全局变量a,在main.cpp中无须包含a.h头文件,使用extern声明一下变量a即可找到a.cpp中的变量a,当然直接包含a.h头文件也可以,不过包含的东西会过多。
static和extern不能一起使用:
static修饰的变量只能在本文件内使用,而extern修饰的变量可以在其他文件内使用,其他文件想使用static修饰的变量必须包含其头文件。
总结:
1.extern声明的全局变量表示其可以在其他文件内使用
2.静态全局变量表示其只能在本文件内使用,其他文件想使用必须包含其头文件