如何在C编程中尽量避免使用全局变量

[复制链接]
 楼主| chuxh 发表于 2011-7-22 15:42 | 显示全部楼层 |阅读模式
大家自己是怎么避免使用全局变量的,用什么方法避免?
中断函数中用到的变量是不是一定要是全局变量?
dingy 发表于 2011-7-22 15:44 | 显示全部楼层
在C编程中大量使用全局变量是有风险的,虽然有时候使用全局变量也能带来高效率。
比如,全局变量生存中期长,将会占用更多的内存。又比如一个全局变量发生了变化就比较不容易找出是哪里改变的等等。。。
pengf 发表于 2011-7-22 15:54 | 显示全部楼层
“比如一个全局变量发生了变化就比较不容易找出是哪里改变的”
那看你写汇编的时候咋办。
栩栩如生 发表于 2011-7-22 16:01 | 显示全部楼层
汇编也支持局部变量
有的连接器还提供局部变量的智能覆盖
renyaq 发表于 2011-7-22 16:17 | 显示全部楼层
一般我是这么做的:能用返回值的话就不会开辟中转的空间;使用位定义,这样也可以大大节省空间
supernan 发表于 2011-7-22 16:45 | 显示全部楼层
参考消息机制
个人习惯用全局变量
 楼主| chuxh 发表于 2011-7-22 16:48 | 显示全部楼层
好像位定义中,每个位都分配一个对应的字长单元吧?
batsong 发表于 2011-7-23 14:06 | 显示全部楼层
如果是几万行以内的单片机程序,不用纠结,大胆使用吧

局部变量效率低下,调试麻烦,而且节约不了多少资源。

而且你单片机的RAM资源不可能使用的那么临界,变量不销毁RAM就不够用?
 楼主| chuxh 发表于 2011-7-27 11:00 | 显示全部楼层
嗯,呵呵,多谢楼上
juventus9554 发表于 2011-7-27 14:04 | 显示全部楼层
我个人认为全局变量用的比较方便,定义好之后,随便哪里都可以调用,当然,变量在什么时候赋值,这个编程者肯定要十分清楚!
 楼主| chuxh 发表于 2011-7-27 14:25 | 显示全部楼层
一个char型全局全局变量可以定义8个bit变量
llljh 发表于 2011-7-27 14:39 | 显示全部楼层
该全局就全局,该局部就局部。
zwll 发表于 2011-7-27 14:43 | 显示全部楼层
多用指针,移植性好
司徒老鹰 发表于 2011-7-27 14:44 | 显示全部楼层
写库的话 用点指针 还说得过去

平时写程序还是少用指针
llljh 发表于 2011-7-27 14:47 | 显示全部楼层
嗯,至于如何少用,那是要具体问题具体分析了
dingy 发表于 2011-7-27 14:49 | 显示全部楼层
尽量写高内聚,低耦合的代码,
pengf 发表于 2011-7-27 15:00 | 显示全部楼层
全局变量,没有避免使用的情况,只有少用的情况。我认为,能用局部变量的尽量用,不能用的情况才用全局变量。

中断函数跟子函数一样的道理,一样都能用局部变量。区别只是,中断条件满足,程序会“智能”的跳到中断函数,子函数要你手动跳转罢了。
栩栩如生 发表于 2011-7-27 15:03 | 显示全部楼层
尽量少用全局变量,要看你的习惯了。
写子函数的时候,最好想一想,能不能把子函数规范化。就是说,一个子函数,要尽可能的被多次调用,同时也要想想,怎么让这个子函数的作用强大。如果常常这样想,你就会喜欢使用带参数函数,带返回值函数。这样,会常常使用局部变量,所以全局变量就少用了。
司徒老鹰 发表于 2011-7-27 15:14 | 显示全部楼层
即使是使用了全局变量了,也要尽可能的发挥其优点。一个全局变量能有多个功能更好,没有多个功能,有2个也不错。就是说,有些函数的功能,可以用定义过的全局变量来实现的,就不要再重新定义一个新的全局变量了。
 楼主| chuxh 发表于 2011-7-27 15:17 | 显示全部楼层
呵呵,无奇不有啊,先结贴了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

936

主题

11296

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部

936

主题

11296

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部