我是这样用extern的...
点击上方“大鱼机器人”,选择“置顶/星标公众号”
福利干货,第一时间送达!
阅读文本大概需要 2 分钟。
0
前言
在交流群中有位哥们问了这个问题,我觉得很有意思。
1
一般如何处理全局变量
众所周知,我们一般对于全局变量,都是在一个.C或者.H文件中定义。
如果在其他文件中需要使用的时候,只需要extern即可。
例如:
在A文件中定义的全局变量:int test ;
如果在B文件中需要使用的时候:extern int test ;
...这样下来,需要使用该数据时,每个文件中都需要再次声明。
十分不爽!!!
2
我们可以换一种方式
第一步:在main.c中进行所有变量的初次定义
第二步:在一个.h文件中对全局变量进行extern
第三步:程序中的每个文件都去包含此.h文件
这样我们就能一次性管理所有的全局变量~
3
以STM32为例
第一步:在main.c中进行初次变量的定义
(图一)
第二步:在sys.h文件中对全局变量进行extern
(图二)
第三步:程序中的每个文件都去包含此.h文件
(图三)
(图四)
同理,在包含一些头文件的时候也可以这样处理。
我们可以看图二,基本上把所有的全局变量和需要包含的头文件都放在sys.h中。
最后,在程序中,每个文件都包含sys.h,想要删减和修改变量以及头文件,都可以在此文件夹中修改。
个人觉得,这样管理起来特别方便且美观。
注:上述示例代码是我自己写的一款平衡小车的代码,公众号后台回复[大车]即可获取
3
最后
若觉得文章对你有帮助,随手点“在看”、转发分享,也是我继续更新的动力。
长按识别图中二维码关注
推荐阅读:
PCB工程师的7个好习惯
哇,电路中居然放了0欧的电阻!!!
//end
这么“好”的文章, 转发+收藏~
我是这样用extern的...相关推荐
- 一口气管理几十个中断不是问题
点击上方"大鱼机器人",选择"置顶/星标公众号" 福利干货,第一时间送达! 阅读文本大概需要 2 分钟. 0 前言 昨天写过一篇关于全局变量的处理方法:我是这 ...
- extern数组与extern指针
数组名代表了存放该数组的那块内存,它是这块内存的首地址.这就说明了数组名 是一个地址,而且,还是一个不可修改的常量,完整地说,就是一个地址常量.数组名 跟枚举常量一样,都属于符号常量.数组名 这个符号 ...
- 嵌入在C++程序中的extern C
1.extern的作用 extern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,可以告知编译器,用extern声明的函数和变量可以在本模块或其它模块中使用. 通常,在模块的头文件中 ...
- extern使用说明
1 基本解释 extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义. 另外,extern也可用来进行链接指定. 2 问题:ext ...
- extern 使用方法具体解释
在C语言中,修饰符extern用在变量或者函数的声明前,用来说明"此变量/函数是在别处定义的.要在此处引用".(extern能够置于变量或者函数前,以标示变量或者函数的定义在别的文 ...
- const和extern用法
1.什么是const? 常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的.(当然,我们可以偷梁换柱进行更新:) 2.为什么引入const? const 推出的初 ...
- extern 用法详解
在C语言中,修饰符extern用在变量或者函数的声明前,用来说明"此变量/函数是在别处定义的,要在此处引用".(extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文 ...
- 【正本清源】关于extern、static、const的正确使用方法
项目要用到DMA传输传感器的数据,研究了一下DMA,觉得并没有什么难的,不就是配置几个参数么,但是却怎么也收不到数据.无奈只能照着野火的例程仿制了一遍.结果还是没有任何反应,这一整天就是在不断地尝试各 ...
- C++ 笔记(05)— 变量(变量定义、声明、初始化、extern关键字、变量之间转换)
1. 变量定义 变量定义就是告诉编译器在何处创建变量的存储,以及如何创建变量的存储.变量定义指定一个数据类型,并包含了该类型的一个或多个变量的列表,如下所示: type variable_list; ...
最新文章
- android中的数据库操作(SQLite)
- 点云数据格式 数据集笔记
- js输出一个菱形_Threejs使用菱形正方形算法,中点替换算法生成随机地形
- google浏览器javascript没反应_浏览器之导航这件小事
- fasttext的异步随机梯度下降导致结果不一致
- 2018 上海.NET职位围观报告
- Linux中wait()函数及waitpid()函数
- 10-Docker 网络
- redis-数据操作-键命令
- 小网站架构优化-提升抗并发能力:子应用程序分离方案
- js 对url进行编码和解码的三种方式
- LQR、Stochastic Bandits、Bayesian Bandits、Contextual Bandits与基于模型的强化学习浅析
- python练习题4
- 2022年最新《谷粒学院开发教程》:1 - 构建工程篇
- java怎么解析json_基于java解析JSON的三种方式详解
- ARM汇编语言编程入门实践
- 微信查询天气公众账号小记
- 订单管理系统审批----未整理
- halcon 相机标定
- 基于springboot微信小程序点餐系统的设计与实现
热门文章
- 国内SAP从业者们2020年最想学习的SAP相关知识分类的调查问卷结果
- Change code to ensure that OPA5 work also in WebIDE
- SAP云平台上的SSO Principal Propagation设置
- different styles of button in footer area
- React应用渲染界面的入口
- Cloud for Customer里的使用的一个第三方js库,用于gzip处理
- settype COM_LOCAT_ADDR出现在CRM change document里的原因
- 使用代码创建ABAP transparent table
- SET UPDATE TASK LOCAL and commit session issue
- 配置表CRMC_SORG_R3ORG在SPRO里的配置路径