点击上方“大鱼机器人”,选择“置顶/星标公众号”

福利干货,第一时间送达!

阅读文本大概需要 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的...相关推荐

  1. 一口气管理几十个中断不是问题

    点击上方"大鱼机器人",选择"置顶/星标公众号" 福利干货,第一时间送达! 阅读文本大概需要 2 分钟. 0  前言 昨天写过一篇关于全局变量的处理方法:我是这 ...

  2. extern数组与extern指针

    数组名代表了存放该数组的那块内存,它是这块内存的首地址.这就说明了数组名 是一个地址,而且,还是一个不可修改的常量,完整地说,就是一个地址常量.数组名 跟枚举常量一样,都属于符号常量.数组名 这个符号 ...

  3. 嵌入在C++程序中的extern C

    1.extern的作用 extern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,可以告知编译器,用extern声明的函数和变量可以在本模块或其它模块中使用. 通常,在模块的头文件中 ...

  4. extern使用说明

    1 基本解释 extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义. 另外,extern也可用来进行链接指定. 2 问题:ext ...

  5. extern 使用方法具体解释

    在C语言中,修饰符extern用在变量或者函数的声明前,用来说明"此变量/函数是在别处定义的.要在此处引用".(extern能够置于变量或者函数前,以标示变量或者函数的定义在别的文 ...

  6. const和extern用法

    1.什么是const?    常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的.(当然,我们可以偷梁换柱进行更新:) 2.为什么引入const? const 推出的初 ...

  7. extern 用法详解

    在C语言中,修饰符extern用在变量或者函数的声明前,用来说明"此变量/函数是在别处定义的,要在此处引用".(extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文 ...

  8. 【正本清源】关于extern、static、const的正确使用方法

    项目要用到DMA传输传感器的数据,研究了一下DMA,觉得并没有什么难的,不就是配置几个参数么,但是却怎么也收不到数据.无奈只能照着野火的例程仿制了一遍.结果还是没有任何反应,这一整天就是在不断地尝试各 ...

  9. C++ 笔记(05)— 变量(变量定义、声明、初始化、extern关键字、变量之间转换)

    1. 变量定义 变量定义就是告诉编译器在何处创建变量的存储,以及如何创建变量的存储.变量定义指定一个数据类型,并包含了该类型的一个或多个变量的列表,如下所示: type variable_list; ...

最新文章

  1. android中的数据库操作(SQLite)
  2. 点云数据格式 数据集笔记
  3. js输出一个菱形_Threejs使用菱形正方形算法,中点替换算法生成随机地形
  4. google浏览器javascript没反应_浏览器之导航这件小事
  5. fasttext的异步随机梯度下降导致结果不一致
  6. 2018 上海.NET职位围观报告
  7. Linux中wait()函数及waitpid()函数
  8. 10-Docker 网络
  9. redis-数据操作-键命令
  10. 小网站架构优化-提升抗并发能力:子应用程序分离方案
  11. js 对url进行编码和解码的三种方式
  12. LQR、Stochastic Bandits、Bayesian Bandits、Contextual Bandits与基于模型的强化学习浅析
  13. python练习题4
  14. 2022年最新《谷粒学院开发教程》:1 - 构建工程篇
  15. java怎么解析json_基于java解析JSON的三种方式详解
  16. ARM汇编语言编程入门实践
  17. 微信查询天气公众账号小记
  18. 订单管理系统审批----未整理
  19. halcon 相机标定
  20. 基于springboot微信小程序点餐系统的设计与实现

热门文章

  1. 国内SAP从业者们2020年最想学习的SAP相关知识分类的调查问卷结果
  2. Change code to ensure that OPA5 work also in WebIDE
  3. SAP云平台上的SSO Principal Propagation设置
  4. different styles of button in footer area
  5. React应用渲染界面的入口
  6. Cloud for Customer里的使用的一个第三方js库,用于gzip处理
  7. settype COM_LOCAT_ADDR出现在CRM change document里的原因
  8. 使用代码创建ABAP transparent table
  9. SET UPDATE TASK LOCAL and commit session issue
  10. 配置表CRMC_SORG_R3ORG在SPRO里的配置路径