C语言开发单片机为啥都是全局变量形式?
Posted 单片机与嵌入式
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言开发单片机为啥都是全局变量形式?相关的知识,希望对你有一定的参考价值。
前言
做控制的工程师特点
float SetSpeed;
float err;
float err_last;
float Kp,Ki,Kd;
float integral;
float result;
float PID(float speed)
{
err=SetSpeed-speed;
integral+=err;
result=Kp*err+Ki*integral+Kd*(err-err_last);
err_last=err;
return result;
}
做非嵌入式的软件工程师特点
总结
-
如果只是文件内调用,全局变量只能写在这个.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非常不友好。
以上是关于C语言开发单片机为啥都是全局变量形式?的主要内容,如果未能解决你的问题,请参考以下文章
单片机c语言程序中,数组最多能有几个元素?为啥我定定义了一个全局的数组,unsigned cha
单片机Keil C51 C语言多文件如何使用全局位变量?跪拜!!
C语言所有变量都默认为auto,全局变量不能为auto,那全局变量默认为啥?