1. extern 可以置于变量声明或函数声明之前,以表示变量或函数的定义在别的文件中。提示编译器遇到此变量和函数时在其他文件中找寻其定义。 2. extern 表示声明一个变量,表示该变量是一个外部变量,也就是全局变量,所以 extern 修饰的变量保存在静态存储区,全局变量如果没有显示初始化,会默认初始化为0,或者显示初始化为0,则保存在程序的 BSS 段,如果不初始化为0,则保存在 DATA 段。 3. 加上 extern“C”后,会指示编译器这部分代码按照C语言编译,而不是C++。由于 C++ 支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中,而不仅仅是函数名;而 C 语言并不支持函数重载,因此编译 C 语言代码的函数时不会带上函数的参数类型,一般只包括函数名。这个功能十分有用,因为在 C++ 以前,很多代码都是 C 语言写的,而且底层的库也是 C 语言写的,为了更好的支持原来的 C 代码和已经写好的 C 语言库,需要在 C++ 中尽可能的支持 C,而 extern“C”就是其中一个策略。