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

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

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

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

extern女士听后掩嘴一笑:“那是因为你不知道怎么理财投资,看看我,轻轻一挥我的仙女棒(extern声明),就把你的财富带到全世界的各个角落,让所有人都能看到你的名号!”

meiy

就这样,静态变量先生明白了,原来真正的富翁不仅要懂得积累,还要学会分享和交流。从此以后,他们联手开创了代码江湖中一段段流传千古的佳话……

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

相关文章
|
8月前
|
Java
用Java判断实现小区进出人员身份
用Java判断实现小区进出人员身份
36 0
|
8月前
【PM专用】快速统计团队还有谁没有登记上报信息,快速筛选出属于自己项目组的成员,未完成XXX工作事项的名单
【PM专用】快速统计团队还有谁没有登记上报信息,快速筛选出属于自己项目组的成员,未完成XXX工作事项的名单
|
C语言 Windows
C语言实现通讯录【文件版】——存档联系人信息
C语言实现通讯录【文件版】——存档联系人信息
|
C++
【.Net】使用委托实现被引用的项目向上级项目的消息传递事件
在实际项目过程中,经常可能遇到被引用的项目要向上传递消息,但是又不能通过方法进行返回等操作,这个时候委托就派上用场了。以下使用委托,来实现被引用的项目向上传递消息的小教程,欢迎各位大佬提供建议。1、新增控制台项目(一般在CS架构中会用的比较多,用于跨线程传递消息使用)。此处用一个控制台项目来模拟演示使用委托进行消息事件的传递教程。
109 0
【.Net】使用委托实现被引用的项目向上级项目的消息传递事件
老板丢给我一堆电话号码,让我挨个进行归属地、运营商查询
老板丢给我一堆电话号码,让我挨个进行归属地、运营商查询
老板丢给我一堆电话号码,让我挨个进行归属地、运营商查询
FreeSwitch给会议室人员增加标识
FreeSwitch给会议室人员增加标识
150 0
|
C语言
C语言火车订单管理源码
C语言火车订单管理源码
206 0