利用extern关键字可以在一个文件中引用另一个文件中的全局变量或函数;
1、引用同一文件中变量
#include
例如上面的代码,num在main函数之后定义,所以在 printf("%dn",num);处会提示num是没有声明的变量;但是func函数中的引用去可以,这是因为func函数对num的调用实在声明完num变量之后的操作。
如果不想改变num声明的位置,此时我们可以利用extern关键字(如下)。
#include
利用extern关键字事先声明num变量,告诉程序num变量确实存在,虽然不在这之前声明,但可以在别的地方找到。
2、引用另一个文件中的变量
main.c
#include
demo02.c
#include
如上所述,在demo02.c文件中定义的全局变量通过extern关键字在mian.c文件中进行引用。特别注意,因为num是全局变量,所以在另一个文件中才会引用成功。如果他是局部变量则不会。
还有一点:extern只用指明类型和变量名,而不能赋初值。只有当声明完成后才可以赋初值。
extern int num = 5;//不可行
extern int num;//可行num = 5;
若此变量不希望被修改可以引用const关键字,如下:
extern const int num;
若只想引用另一个文件中的个别变量可以采用此方法。
若使用include头文件把整个文件包含进去,则会造成安全隐患。
3、引用另一个文件中的函数
main.c
#include
demo02.c
#include
运行结果:
在main函数中引用了demo02.c文件中的函数func(); 函数都是全局的,所以extern的修饰方法与修饰全局变量时相同。指明函数的返回值的类型和参数。