extern用法小结
1. 用关键字extern来重新声明以前定义过的外部变量
有如下定义中:
#include <iostream.h>
int number = 8; //external variable
void update (int num); //function prototypes
int main()
{
cout << "Global number is " <<number <<endl;
update(3);
return 0;
}
 
void update (int num)
{
extern int number;
number += num;
cout << "Global number updating to " << number <<endl;
}
 
输出:
Global number is 8
Global number updating to 11
   
可以看出,main()和update()都可以访问外部变量number。其中:int number = 8,叫做 定义声明,它给该变量分配存储空间;extern int number,叫 引用声明,它不给变量分配存储空间。extern用在引用其他地方(或函数)定义的变量的声明,并且不能在引用声明中初始化变量。比如说,extern int number = 9,这种用法是错误的。
 
2. 用关键字extern来引用声明其他文件定义的外部连接性变量,以便在多文件程序的不同部之间共享数据
用法如下:
//file1
int errors =20; //external declaration
-------------------------
//file2
Extern int errors; //refers to errors from file1
 
3. 在C++ 程序中调用被C 编译器编译后的函数,加extern  “C”,约定该函数使用C语言连接。链接程序要求每个不同的函数都有不同的符号名。在C语言中,一个名称只对应一个函数。但在C++,同一个名称可能对应多个函数,必须将这些函数翻译为不同的符号名称,因此,在C++编译器执行名称矫正货名称修饰,为重载函数生成不同的符号名称。可以预见,链接程序寻找与C++函数调用匹配的函数时,使用的方法和C语言不同的。