温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2022-01-06 20:05:00 来源:亿速云 阅读:160 作者:柒染 栏目:互联网科技

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

extern 的含义

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

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

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

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

直接在文件头定义

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

extern 声明变量

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

extern中容易忽视的用法是什么这样,iNum 便可以跨文件进行使用了,但是跨文件使用的要进行头文件包含,要包含 extern 声明变量所在的头文件。

在函数内用 extern 声明变量

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

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

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI