extern 是一个关键字。其主要作用有两个方面。
(1)extern 放在变量或者函数之前的时候,表示变量或者函数的定义是在别的文件中,提示编译器,在遇到此变量或者函数的时候去别的模块中寻找定义。
(2)和“c”一起使用,比如"extern "c" void fun(int a, int b)",它告诉编译器在编译这个fun函数名字的时候按照c的规则去翻译相应的函数名,而不是c++的,因为c++支持函数的重载,会把这个函数名字翻译的面目全非。
extern 注意事项
(1)在一个源文件中定义了一个数组 char a[6],在另一个文件中用下列语句进行了声明,extern char *a 是不可以的,编译可以通过但是运行会出现错误,原因在与指向类型的指针不等价于指向类型的数组。extern char *a 声明的是一个指针变量而不是字符数组。因此与实际的定义不同,造成非法访问,应该将声明改为 extern char a[];