打印
[疑难问答]

如何在单片机上使用全局变量

[复制链接]
2115|50
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sanfuzi|  楼主 | 2023-11-25 14:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

在单片机中经常会遇到二个不同的.c文件需要使用同一个变量,但如何定义一个变量可以在不同的.c文件中使用呢?  当然是使用全局变量啦,可能有的人知道需要用extern来声明变量,当时总是编译错误,当然啦,我也是经常错误,才写这个笔记的啊

下面我先介绍一下怎么正确的使用,在贴几张错误使用全局变量的方法
如何正确的使用extern,实现main.c   led.c同时使用变量aaa

1在main.c中定义变量  int aaa=0;
2在led.c中定义 extern int aaa;(千万不要赋值)

这样就可以二个.c文件都可以使用aaa这个变量了,我之前为什么一直写错呢,我理解错了extern的作用,其实extern是告诉编译器这个变量在其他.c文件里面有了,取其他文件找就行了,哈哈,能搜到我这个的肯定是和我犯了一样的错误吧
现在贴几张错误的使用



显示提示有错误:ERROR L104: MULTIPLE PUBLIC DEFINITIONS


现在把extern int aaa=0;改为extern int aaa;

使用特权

评论回复
沙发
i1mcu| | 2023-12-5 11:52 | 只看该作者
如果全局变量的数量较多或者占用空间较大,可能会占用较多的RAM资源

使用特权

评论回复
板凳
loutin| | 2023-12-5 13:01 | 只看该作者
在需要使用全局变量的地方声明全局变量。在使用全局变量之前,需要先声明它们。

使用特权

评论回复
地板
lihuami| | 2023-12-5 14:11 | 只看该作者
在函数内部,你可以通过其名称直接访问全局变量。

使用特权

评论回复
5
saservice| | 2023-12-5 16:47 | 只看该作者
可以考虑使用互斥锁等机制来保护全局变量的访问。

使用特权

评论回复
6
tifmill| | 2023-12-5 18:14 | 只看该作者
建议尽量减少全局变量的使用,尽可能使用局部变量。当全局变量确实有必要时,再考虑使用。

使用特权

评论回复
7
uytyu| | 2023-12-5 18:50 | 只看该作者
在单片机编程中,全局变量的声明方式与其他编程语言类似。

使用特权

评论回复
8
sdlls| | 2023-12-6 17:03 | 只看该作者
在需要使用全局变量的源文件中,需要使用extern关键字声明全局变量

使用特权

评论回复
9
pmp| | 2023-12-6 18:44 | 只看该作者
全局变量的作用域为整个源文件,在整个源文件中都可以访问全局变量。

使用特权

评论回复
10
jtracy3| | 2023-12-6 22:54 | 只看该作者
当多个函数需要访问和修改同一组数据时,可以考虑将这些数据封装到一个结构体或类中,并在需要访问的函数中创建该结构体或类的实例。

使用特权

评论回复
11
gygp| | 2023-12-8 15:14 | 只看该作者
在单片机编程中,全局变量是在函数外部定义的变量,它可以被程序中的所有函数访问。

使用特权

评论回复
12
cashrwood| | 2023-12-8 16:05 | 只看该作者
需要注意全局变量的生命周期,避免在程序的某些部分错误地访问全局变量。

使用特权

评论回复
13
mnynt121| | 2023-12-9 15:14 | 只看该作者
全局变量具有文件作用域,即如果全局变量只在一个文件中使用,应将其定义在该文件中,而不要写入头文件。

使用特权

评论回复
14
mickit| | 2023-12-9 16:16 | 只看该作者
过多地使用全局变量可能导致程序耦合度高

使用特权

评论回复
15
fengm| | 2023-12-9 20:42 | 只看该作者
如果需要在代码中初始化全局变量,可以在定义全局变量时进行初始化

使用特权

评论回复
16
mickit| | 2023-12-9 21:55 | 只看该作者
全局变量在整个程序中都可以被访问和修改,过多的全局变量可能会导致程序的混乱和难以维护。

使用特权

评论回复
17
mikewalpole| | 2023-12-9 22:26 | 只看该作者
在程序开始执行时,对全局变量进行初始化。

使用特权

评论回复
18
bestwell| | 2023-12-10 15:21 | 只看该作者
如果需要初始化全局变量,可以在定义全局变量时进行初始化。

使用特权

评论回复
19
louliana| | 2023-12-10 16:08 | 只看该作者
全局变量可以在程序的任何位置使用,因此需要在程序开头或模块中定义它们

使用特权

评论回复
20
pentruman| | 2023-12-10 17:04 | 只看该作者
降低全局变量的使用,提高程序的模块化程度。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

3094

帖子

1

粉丝