在文件1中用extern定义一个变量,标明这个变量可以被其他文件应用,并且其他文件不需要使用#include "文件1";来包含文件1直接通过extern声明一下那个变量即可使用。extern的作用范围为整个程序,而生命周期为直到程序结束。

static的作用范围只在定义它的范围内,而生命周期和extern一样。

static和extern是两种存储类别,其他的存储类别还有auto和register,auto为默认的存储类别。

因为作用范围不一样,所以不能同时使用extern和static修饰一个变量,否则就有二义性了。