关键字 extern
该关键字用在变量名或函数名前,是用来引用在别处定义的变量或函数。
在一个工程中,创建两个文件。
我简单创建了“new_test_2023”和“test_ceshi”两个源文件,
在第一个源文件内,编写的是如下代码:
int main()
{
extern int chapters;
extern char arr[];
extern float price;
printf("章节数:%d\n书名:%s\n价格:%.2f\n", chapters, &arr, price);
return 0;
}
第二个源文件内,则是编写的第一个源文件所需要的三个变量:
int chapters = 16;
char arr[]= "月亮与六便士";
float price = 25.5;
这个时候,运行该工程,输出结果:
所以可以得出结论,extern关键字,可以引用一个文件外的其他变量。
外部链接属性
只有具有外部链接属性的变量,才能被关键字extern引用。当然,也不是所有的变量,都具有外部链接属性的。
全局变量是具有外部链接属性的,如果全局变量被static修饰,外部链接属性就变成了内部链接属性,其他源文件是没有办法通过这个链接找到这个符号的,也就是说,static修饰后的局部变量只能在自己所在的.c文件内部使用。
函数也是同理,函数本身是具有外部链接属性的,其他源文件想要使用函数,正确使用声明就可以,但是如果函数被static修饰后,外部链接属性就变成了内部链接属性,这个时候函数只能在自己所在的.c文件内部使用,不能在外部使用。
同时,值得一提的是,局部变量无链接属性。