代码快递员:extern如何送达静态变量至各文件目的地

发布时间:2024年01月07日

各位少年,大家好,我是博主那一脸阳光

在这里插入图片描述

前言:话说有一天,静态变量先生和extern女士一起去参加编程界的武林大会。静态变量先生自豪地说:“你知道我为什么这么受欢迎吗?因为我可是个低调的富翁,我在函数内部藏着金元宝(持久化存储),谁也别想偷走我的财富。”

extern女士听后掩嘴一笑:“那是因为你不知道怎么理财投资,看看我,轻轻一挥我的仙女棒(extern声明),就把你的财富带到全世界的各个角落,让所有人都能看到你的名号!”
meiy
就这样,静态变量先生明白了,原来真正的富翁不仅要懂得积累,还要学会分享和交流。从此以后,他们联手开创了代码江湖中一段段流传千古的佳话……

v
假设左边文件名称add.c,右边叫做test.c,左边是全局变量,我们知道全局变量作用域是程序结束,但是这是多条文件,所以这里介绍一个关键字 extern

extern 数据类型 变量名
#include<stdio.h>
extern int g_val
int main()
{
	printf("%d\n", g_val);

	return 0;
}
int g_val = 2029;

这里的extern可以想象成一个接口,extern让大家原本没有链接属性的多个文件,变得有所链接,这本段代码中exturn声明了,g
_val的全局变量,而不是创建,所以在test。c这个文件里可以直接使用,接下来推荐几个使用exturn措施。

extern不可以声明被static修饰的静态变量
extern在声明的文件中的内容与其他文件保持一致
extern可以声明函数和函数参数,但内容必须和写函数和函数参数的文件保持一致,否则无法使用

大家可能不理解,这三条语法定义的规则,我们通过代码,演示一下。



static int Add(int x,int y)
{
return x+y
}
```sc.c
#include<stdio.h>
exturn int Add(int x,int y);
int main()
{
int a=10;
int b=20;
int c=Add(a,b);
printf("%d\n",c);
return 0;
}
test.c

这段代码会报错,因为exturn无法声明static修饰的变量,大家通过上面的代码理解了,我说的三条建议性的语句。
接下来介绍三条static语句的使用规则
static修饰全局变量:
1.首先要知道全局变量是具有外部链接数学的
2.全局变量被static修饰后,外部链接属性就变成内部链接属性,就是这个全局变量,只能在自己所在的.c文件中使用,其他文件看不到。
相当于作用域变小了。

static修饰函数
1函数也是具有外部链接属性
2但是被static修饰后,外部链接属性就变成内部链接属性,这个函数只能在自己所在的.C文件中使用
其他文件中及时声明了,也不能使用。

总结
在编程的江湖中,static与extern无疑是两位举足轻重的侠客,他们各自拥有独特武艺,又默契配合,共同维护着代码世界的秩序。

static大侠深藏不露,身怀绝技。对于局部变量,他赋予其持久生命力,让它们在函数多次调用间延续记忆;而对于全局变量,他又巧妙地施加隐身术,令它们仅在当前编译单元内享有盛誉,避免了外界的干扰和纷争。静态函数亦是他的一大拿手好戏,它们悄然坚守岗位,只为局部领域提供服务,减少了全局命名空间的拥挤。

而extern女侠,则是跨文件交流的信使,她擅长编织一张无形的网络,将各编译单元中的全局变量紧紧相连。通过她的引荐,全局变量得以冲破束缚,跨越疆界,成为各大模块间信息传递的重要纽带。同时,她也不忘提携函数,让它们在不同的源文件中声名远播,为项目的整体协调和运作提供了强大支持。

总的来说,static和extern两位大侠在C语言的广阔天地中各显神通,相辅相成,共同成就了代码模块化、结构化和高效化的发展。作为开发者,我们应当善用这两大利器,精雕细琢每一行代码,打造出既稳定可靠又便于维护的优质项目。愿我们在编程的道路上,随这两者一同探寻更深层次的奥秘,书写出更多精彩的程序篇章。

文章来源:https://blog.csdn.net/2301_79840227/article/details/135430942
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。