单片机开发中全局变量成最优解,对比PC端劣势明显
C语言开发单片机为什么大多数都采用全局变量的形式?,时序,单片机,c语言,新模型,局部变量,全局变量
单片机的芯片资源向来处于 “精打细算” 的规格,CPU 主频通常不高,RAM 总容量原本就紧张,分给栈空间的更是少之又少。倘若如同普通软件那般,依靠函数返回值传递数据、频繁借助局部变量周转,一来二去占用的全是珍贵的栈内存,极易出现栈溢出的状况。并且,局部变量进行赋值,函数调用期间参数入栈以及出栈,对于主频并不高的单片机CPU而言,均属于一批额外的指令开销,积累起来就会致使程序运行速度被拖慢,甚至对实时响应效果产生影响,在需要精准控制时序的单片机场景当中,这可是具有致命性的。
反观全局变量,根本无需纠结这般麻烦之事。它径直占用固定的 RAM 空间,无需挤占栈资源,在程序里的任何一处地方都能够直接予以访问,就此省略了数据传递的中间环节。没有了参数拷贝以及返回值赋值的额外指令,CPU 的执行效率大幅提升,性能损耗降至最低程度,恰好适配单片机“低主频、小内存”的硬件短板。对于单片机开发而言,首要目标是使程序在有限的资源当中稳定运行起来,并且还要确保实时性,在这个时候,简单、直接、开销小的全局变量,自然而然就成为了最优选择。
确实,置于如今性能处于过剩状态的PC端或者服务器端开发之中,全局变量的劣势是极为显著的,具体表现为:数据访问缺乏可控性,任何人都能够进行修改,时序方面的问题难以展开排查,定位bug需要耗费大量的时间与精力。然而,单片机的场景却全然不一样,其程序规模一般而言并不大,功能相对较为单一,代码逻辑也并非那般复杂,全局变量所引发的可维护性问题已被极大程度地弱化了。相较于“性能不足、内存无法承受”这样的核心矛盾而言,全局变量所带来的那少许维护成本,着实是次要的。在单片机硬件所带来的限制条件之下,优先去确保程序的运行效率以及稳定性,相较于追求那种极致的可维护性而言,是更为实际的,这同样也是在运用C语言开展单片机开发工作的时候,大多数情形下都会选择全局变量的最为核心的原因所在句号。

更多推荐



所有评论(0)