johnwjl 发表于 2007-10-20 10:02

关于DSP中全局变量与局部变量的使用

在其他论坛看到如下问题,自己也有点困惑,特来此地请教各位:<br /><br />请教:关于全局变量与局部变量使用的问题本人是初次做DSP开发,在学校听过一个讲座,讲到全局变量与局部变量的使用问题,那个老师给我们讲,做嵌入式C编程要尽量使用局部变量,最好不要用全局变量。而我在此论坛上看到一篇**说:要多用全局变量和静态变量,少用局部变量。<br /><br />兄弟们能不能给点意见!!!<br />

翔子 发表于 2007-10-20 10:33

DSP交流网

我习惯多用全局变量<br /><br />可能看个人习惯,或者说,我的做法一直都是错的<br />反正我还是**我的做法。我写的程序也不是很大。 <br /> 相关链接:<a href='http://www.hellodsp.com'>http://www.hellodsp.com</a>

johnwjl 发表于 2007-10-21 18:14

DSP中提倡尽量使用全局变量?

是不是搞ARM和搞DSP,全局变量与局部变量的使用有所不同?DSP中提倡尽量使用全局变量?

wowow 发表于 2007-10-21 18:32

不同的项目有不同的要求

自己弄清楚各种变量类型的优缺点,针对项目中不同的变量自己灵活把握。<br />要考虑的的问题有:<br />1.变量的生存周期<br />2.可移植性<br />3.安全性<br />4.占用的空间<br />5.程序的效率<br />。。。。等等

soso 发表于 2007-10-22 12:53

应该没有具体的定论,且这个是C语言区别,不存在只DSP这样.

tjsheep 发表于 2007-10-23 22:10

呵呵,这里有定义的问题

一般堆栈都在高速ram区,所以局部变量会快一点,而全局变量在ebss或bss区,这个区域比较大,一般定义在外部ram,速度比较慢。所以看你的变量需要的多少来定。<br />第二个,如果是做解码等计算量大的工作,那么程序结构以函数包为主,那么基本上都是用局部变量,如果是做控制,那么需要大量的变量来控制和记录程序运行的流程,那么这些变量基本都是static或全局变量。<br />所以综合起来要看你的程序类型了,呵呵

qzx0580 发表于 2007-10-24 10:38

顶六楼

六楼关于解码的说法正确与否我不知道,但是对于控制的理解与我是一致的.在控制中作为承上启下的参数几乎都是设置为全局变量的.只有极少数无关紧要的变量只供函数内部使用的定义为局部变量.

flylongins 发表于 2007-10-26 20:48

局部变量和全局变量区别很大。

对程序的周期有着重要影响。<br />我一个程序的一个循环,<br />用局部变量,和用全局变量,<br />相差4倍的运行周期,<br />可不能小看。<br />原因6楼正解。

yydsp 发表于 2007-10-27 03:41

我觉得原则就是

我觉得原则就是:<br /><br />一般能用局部变量的地方都采用局部变量。如果改成全局变量能够很好的提高效率,比如减少参数传递,可以用全局变量。全局变量太多,一个project没关系,如果一个DSP片子上集成不同的project,就不太好了。<br /><br />另外,全局变量也是可以随便放在任何地址空间的,自己指定就是了。<br />

computer00 发表于 2007-10-27 08:09

通常少量的局部变量会分配在寄存器中,这样运行速度很快

但是大量的局部变量,只能分配到栈中,这牵涉到堆栈指针的调整以及大量数据的传递等,有时用全局变量反而更好。

hong7817 发表于 2012-11-29 19:40

我也是做控制的,习惯用全局变量,还方便调试
页: [1]
查看完整版本: 关于DSP中全局变量与局部变量的使用