C语言开发单片机为啥都是全局变量形式?
时间:2020-07-22 13:39:53
[导读]01 前言 全局变量简直就是嵌入式系统的戈兰高地。冲突最激烈的双方是: 1. 做控制的工程师; 2. 做非嵌入式的软件工程师。 02 做控制的工程师特点 他们普遍的理解就是“变量都写成全局该有多方便”。我之前面试过一个非常有名的做控制实验室里出来的PhD/Maste
01
前言
02
做控制的工程师特点
float SetSpeed;float err;float err_last;float Kp,Ki,Kd;float integral;float result;float PID(float speed){err=SetSpeed-speed;=err;result=Kp*err+Ki*integral+Kd*(err-err_last);err_last=err;return result;}
03
做非嵌入式的软件工程师特点
04
总结
-
如果只是文件内调用,全局变量只能写在这个.c文件里,不要写进.h文件。 -
如果有文件外调用,全局变量要写在.h文件里。 -
.h里面的全局变量全局可读,但是只有本文件组可以写。别的文件要写请调用set函数。 -
所有的全局变量无论在.h还是.c里面都要包成同名struct。哪怕只有一个变量也要写进struct里面。比如PID.c里面有一个pid_S,PID.h里面有个PID_S。这样其他人不仅可以立即识别出一个变量是project内global/文件内static/函数内local,同时还能轻松追溯到这个函数是属于哪个文件的。 -
不要写函数内的static变量。函数内的static变量在实际的项目中几乎就是bug生成器,没法简单的reset。而且对unit test非常不友好。
-END-
推荐阅读
免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!






