打印

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

[复制链接]
1378|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lindoug|  楼主 | 2020-6-3 10:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我相信一般人都能李姐,当一个人脑袋里装满了自动控制,电机拖动,数字电路,物理模型,还有一脑子对口的专业知识(包括不限于流体力学,化学反应,管路阀门设计,液压伺服,甚至农作物管理)。他的脑容量就很难挤出多少空余给“如何写出更优美的代码”了。
而且工控界的学编程办法和学校不同。是没有老师传帮带的,纯靠前浪后浪口耳相传----我们实验室的前浪50多岁了,疫情前还在用汇编操作寄存器的方式给写机器人的驱动板。
所以说为啥要用全局变量,因为它简单,一看就明白。ctrl+f就能找到所有出现位置,超级好改。至于线程安全不安全----线程是啥?我们村里人都用中断的233333
最后说一句,当你看到工控领域的烂代码时。可以想想一个场景----一个工程师,一天半没睡了。它坐在一个15厘米高的板凳上,佝偻着腰凑近屏幕,笔记本放在膝盖上,用Jlink,swd或是什么奇奇怪怪的线连着一大堆积满灰尘的设备。在老旧的厂房里调着20年前别人写的C代码。这样就能开心很多~



作者:田雅夫
链接:https://www.zhihu.com/question/396710272/answer/1243716904
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

使用特权

评论回复

相关帖子

沙发
andy520520| | 2020-6-3 10:59 | 只看该作者
应该 大多是原来写汇编转过来写C语言的工程师,沿用了写汇编用全局变量的习惯,当然汇编也是可以用全局和局部变量来减低模块耦合的。

使用特权

评论回复
板凳
24kdewhite| | 2020-6-3 13:35 | 只看该作者
andy520520 发表于 2020-6-3 10:59
应该 大多是原来写汇编转过来写C语言的工程师,沿用了写汇编用全局变量的习惯,当然汇编也是可以用全局和局 ...

汇编没有变量的概念吧,没有数据类型,自由度比C高多了

使用特权

评论回复
地板
coody| | 2020-6-3 15:52 | 只看该作者
那得看程序需要吧?局部变量也用得多啊。
用来保存数据的,比如串口收发缓冲数组,不用全局变量,用局部变量怎么行?

使用特权

评论回复
5
andy520520| | 2020-6-3 16:37 | 只看该作者
24kdewhite 发表于 2020-6-3 13:35
汇编没有变量的概念吧,没有数据类型,自由度比C高多了

汇编没有变量的概念吧,没有数据类型  

确定没有?

使用特权

评论回复
6
keer_zu| | 2020-6-3 18:04 | 只看该作者
C语言理解和使用不到位呗

李姐是谁?

使用特权

评论回复
7
24kdewhite| | 2020-6-4 09:19 | 只看该作者
andy520520 发表于 2020-6-3 16:37
汇编没有变量的概念吧,没有数据类型  

确定没有?

8位机确定没有,你想要多少字节的数据就多少字节,没有什么整形,浮点,有没有符号之分,如果你觉得有,请举例

使用特权

评论回复
8
24kdewhite| | 2020-6-4 09:22 | 只看该作者
andy520520 发表于 2020-6-3 16:37
汇编没有变量的概念吧,没有数据类型  

确定没有?

汇编是针对内存来操作的,单个字或相邻的字有没有关联,完全看你怎么做

使用特权

评论回复
9
前功尽弃| | 2020-6-4 09:24 | 只看该作者
有时候是单片机容量不够

使用特权

评论回复
10
hzpyl| | 2020-6-5 15:25 | 只看该作者
很多51,就这么点RAM,FLASH,
这么省,这么用,
FLASH不够,有时漫天goto,省

使用特权

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

本版积分规则

468

主题

472

帖子

19

粉丝