千家信息网

extern中容易忽视的用法是什么

发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,本篇文章为大家展示了extern中容易忽视的用法是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。extern 的含义首先看到 extern 的出现,我们应
千家信息网最后更新 2025年12月03日extern中容易忽视的用法是什么

本篇文章为大家展示了extern中容易忽视的用法是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

extern 的含义

首先看到 extern 的出现,我们应该明白其含义是全局的意思。其次当看到 extern 修饰一个变量时,我们应该能够区分这是对于一个变量的声明,相应的,有了对于变量的声明,那么就应该具备变量的定义。关于变量的声明和变量的定义的区别,笔者曾经看到一句话是这样进行描述的,变量的存在需要一个存储空间,那这个存储空间就好比是房子,那变量的声明就好比是你拿到了对于房子的房产证,但是还没有拿到房子,变量的定义便是你已经住到房子里面了,已经在使用房子了。关于 extern 所声明的全局变量,我们最常见的分为两种:

  1. 没有用 extern 声明的变量,直接在文件头定义。

  2. 用 extern 声明变量,然后再在一个 .c 文件定义变量

以上两种方式定义的变量定义的变量均称之为全局变量,只不过变量的作用域范围有所不同,第一种的作用域范围仅限于本文件,第二种方式定义的全局变量的作用域范围是整个工程。还有一种方法是笔者在阅读 RT_Thread 源码的时候发现的一种用法,其作用域范围介于上述两种之间。

直接在文件头定义

如图所示,在test1.c文件头定义了 iNum 变量,test1.c中的function0() 和 function1()都可以使用这个变量,最后在main函数中调用这两个函数,输出的值是2.但是 iNum 不能在 main.c 文件中使用,也就是不能跨文件使用。

extern 声明变量

为了能够使得变量能够跨文件使用,也就是作用域扩大到整个工程,这里引入里 extern 声明变量的用法,对于笔者的习惯而言,我一般是将 extern 声明的变量放在 .h 文件中,如下图所示:

这样,iNum 便可以跨文件进行使用了,但是跨文件使用的要进行头文件包含,要包含 extern 声明变量所在的头文件。

在函数内用 extern 声明变量

在函数内用 extern 声明变量与前两种的作用域范围有所不同,介于上述两者之间,具体的用法如下图所示: 我在 test.c 文件头定义了一个变量 iNum,但是没有在头文件进行声明,因此这个变量作为全局变量的作用域范围是 test.c 文件,但是与第一个例子不同的是,我虽然没有在头文件进行声明,但是我在 function.c 文件里的function3() 函数里声明了 iNum,所以它的所用域范围扩大到 function3() 函数内,当function3() 函数运行结束,iNum的作用域又缩小至 test.c 文件内。

上述内容就是extern中容易忽视的用法是什么,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

变量 文件 作用 函数 范围 全局 房子 不同 笔者 之间 也就是 内容 含义 工程 技能 方式 有所不同 知识 空间 存储 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 南通满满网络技术有限公司怎么样 电网网络安全政策 软件开发经理视频 遵义雄杰网络技术支持 网络安全得奖感受 招联金融软件开发 面试题 苏州比较有名的网络技术 江西综合软件开发注意事项 欧洲dota2服务器 多媒体网络技术专业就业方向 python软件开发与实现 那个群聊网络技术 固原在线系统软件开发搭建 千业互联网科技是做什么的 杭州超事通网络技术有限公司 镇江专业网络安全准入控制公司 软件开发就是在坑人 图书馆数据库技术 怎样把视频传上腾讯云服务器上 网络安全教育周手抄报 网络安全三年级手抄报装饰 江西综合软件开发注意事项 浙江信息化软件开发活动方案 计算机等级数据库考试题 数据库安全性有哪些方面 网络安全政府单位最基本要求 emerson服务器管理 华为服务器如何看阵列等级 开封淮河医院网络安全中标 创新软件开发市场报价
0