0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

C语言开发单片机为什么大多数都采用全局变量的形式?

淘晶驰串口屏 2025-11-12 14:29 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

单片机的芯片资源从来都是 “精打细算” 的级别,CPU 主频普遍不高,RAM 总容量本就紧张,分给栈空间的更是少得可怜。要是像普通软件那样,依赖函数返回值传递数据、频繁用局部变量周转,一来二去占用的全是宝贵的栈内存,很容易出现栈溢出的问题。而且局部变量的赋值、函数调用时的参数入栈出栈,对主频不高的单片机 CPU 来说,都是一堆额外的指令开销,积少成多就会拖慢程序运行速度,甚至影响实时响应效果 —— 这在需要精准控制时序的单片机场景里,可是致命的。

反观全局变量,完全不用纠结这些麻烦。它直接占用固定的 RAM 空间,不用挤占栈资源,程序里任何地方都能直接访问,省去了数据传递的中间环节。没有了参数拷贝、返回值赋值的额外指令,CPU 执行效率大大提升,性能损耗降到最低,刚好适配单片机 “低主频、小内存” 的硬件短板。对单片机开发来说,首要目标是让程序在有限的资源里稳定跑起来,还要保证实时性,这时候简单、直接、开销小的全局变量,自然成了最优解。

当然,放在现在性能过剩的 PC 端或服务器端开发里,全局变量的劣势很明显:数据访问不受控,谁都能修改,时序问题难排查,bug 定位起来费时费力。但单片机场景完全不同,它的程序规模通常不大,功能相对单一,代码逻辑也没那么复杂,全局变量的可维护性问题被大幅弱化。比起 “性能不够用、内存撑不住” 的核心矛盾,全局变量带来的那点维护成本,实在是次要的。在单片机的硬件限制下,优先保证程序的运行效率和稳定性,远比追求极致的可维护性更实际,这也是为什么 C 语言开发单片机时,大多数情况都会选择全局变量的核心原因。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6074

    文章

    45334

    浏览量

    663301
  • cpu
    cpu
    +关注

    关注

    68

    文章

    11216

    浏览量

    222859
  • C语言
    +关注

    关注

    183

    文章

    7642

    浏览量

    144556
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    请问C语言开发单片机为什么大多数采用全局变量形式

    C语言代码,大多数都是使用全局变量,也就是用很多函数来操作这些变量,比如函数1把一个全局变量经过
    发表于 12-04 07:47

    C语言开发单片机为什么大多数采用全局变量形式

    单片机
    电路设计
    发布于 :2022年12月28日 13:51:23

    C语言一定要用全局变量形式开发单片机

    01前言全局变量简直就是嵌入式系统的戈兰高地。冲突最激烈的双方是:1. 做控制的工程师, 2. 做非嵌入式的软件工程师。02做控制的工程师特点他们普遍的理解就是“变量写成全局该有多方
    发表于 02-28 07:25

    C语言开发单片机都是用全局变量形式

    总的来说,对于大多数程序员来说全局变量可谓是又爱又恨。不用吧,很多场合下使用全局变量的确能够节省很多编码力气,毕竟可以减少函数间的参数及数据传递;用吧,很多时候对于多任务或者说多线程场景,必须考虑
    发表于 02-28 06:44

    从汇编代码访问C全局变量

    12.2 从汇编代码访问 C target=_blank style=cursor:pointer;color:#D05C38;text-decoration:underline;》C 全局变
    发表于 10-19 09:25 0次下载

    C51单片机中定义一个全局变量会有怎样的影响

    全局变量被定义在内存中的专门地址上,存储位置固定。对于频繁存取的重要变量但可以采用全局变量以减少代码的长度;由于全局变量总是占用内存,如果过
    发表于 11-02 16:38 8504次阅读

    C语言中,全局变量滥用的后果是什么

    01 啥是全局变量 说起全局变量,就不得不提到全局变量,局部变量,静态全局变量,静态局部变量,这
    发表于 06-24 17:14 1912次阅读

    C语言中局部变量全局变量

    全局变量也称为外部变量,它是在函数外部定义的变量。它不属于哪一个函数,它属于一个源程序文件。其作用域是整个源程序。在函数中使用全局变量,一般应作全局
    的头像 发表于 10-15 10:48 6183次阅读

    C语言开发单片机为啥都是全局变量形式

    全局变量简直就是嵌入式系统的戈兰高地。冲突最激烈的双方是: 1. 做控制的工程师; 2. 做非嵌入式的软件工程师。
    发表于 02-04 06:14 7次下载
    <b class='flag-5'>C</b><b class='flag-5'>语言</b><b class='flag-5'>开发单片机</b>为啥都是<b class='flag-5'>全局变量</b><b class='flag-5'>形式</b>?

    C语言开发单片机为什么大多数采用全局变量形式

    总的来说,对于大多数程序员来说全局变量可谓是又爱又恨。不用吧,很多场合下使用全局变量的确能够节省很多编码力气,毕竟可以减少函数间的参数及数据传递;用吧,很多时候对于多任务或者说多线程场景,必须考虑
    发表于 11-14 09:21 9次下载
    <b class='flag-5'>C</b><b class='flag-5'>语言</b><b class='flag-5'>开发单片机</b>为什么<b class='flag-5'>大多数</b><b class='flag-5'>都</b><b class='flag-5'>采用</b><b class='flag-5'>全局变量</b>的<b class='flag-5'>形式</b>?

    C语言开发单片机为什么大多数采用全局变量形式

    01前言全局变量简直就是嵌入式系统的戈兰高地。冲突最激烈的双方是:1. 做控制的工程师, 2. 做非嵌入式的软件工程师。02做控制的工程师特点他们普遍的理解就是“变量写成全局该有多方
    发表于 01-13 14:59 0次下载
    <b class='flag-5'>C</b><b class='flag-5'>语言</b><b class='flag-5'>开发单片机</b>为什么<b class='flag-5'>大多数</b><b class='flag-5'>都</b><b class='flag-5'>采用</b><b class='flag-5'>全局变量</b>的<b class='flag-5'>形式</b>?

    C语言开发单片机为啥都是全局变量形式

    01前言全局变量简直就是嵌入式系统的戈兰高地。冲突最激烈的双方是:1. 做控制的工程师;2. 做非嵌入式的软件工程师。02做控制的工程师特点他们普遍的理解就是“变量写成全局该有多方便
    发表于 01-13 15:01 1次下载
    <b class='flag-5'>C</b><b class='flag-5'>语言</b><b class='flag-5'>开发单片机</b>为啥都是<b class='flag-5'>全局变量</b><b class='flag-5'>形式</b>?

    C语言开发单片机为什么大多数采用全局变量形式

    总的来说,对于大多数程序员来说全局变量可谓是又爱又恨。不用吧,很多场合下使用全局变量的确能够节省很多编码力气,毕竟可以减少函数间的参数及数据传递;用吧,很多时候对于多任务或者说多线程场景,必须考虑
    发表于 01-13 15:03 6次下载
    <b class='flag-5'>C</b><b class='flag-5'>语言</b><b class='flag-5'>开发单片机</b>为什么<b class='flag-5'>大多数</b><b class='flag-5'>都</b><b class='flag-5'>采用</b><b class='flag-5'>全局变量</b>的<b class='flag-5'>形式</b>?

    C语言开发单片机为什么大多数采用全局变量形式

    全局变量简直就是嵌入式系统的戈兰高地。冲突最激烈的双方是:1. 做控制的工程师, 2. 做非嵌入式的软件工程师。
    发表于 02-09 09:54 1次下载
    <b class='flag-5'>C</b><b class='flag-5'>语言</b><b class='flag-5'>开发单片机</b>为什么<b class='flag-5'>大多数</b><b class='flag-5'>都</b><b class='flag-5'>采用</b><b class='flag-5'>全局变量</b>的<b class='flag-5'>形式</b>?

    嵌入式C编程中全局变量问题分享

    嵌入式特别是单片机os-less的程序,最易范的错误是全局变量满天飞。这个现象在早期汇编转型过来的程序员以及初学者中常见,这帮家伙几乎把全局变量当作函数形参来用。
    发表于 07-17 16:53 1058次阅读