打印

大家自己是怎么避免使用全局变量的

[复制链接]
1647|32
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
llia|  楼主 | 2016-12-11 18:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用什么方法避免?
中断函数中用到的变量是不是一定要是全局变量?
沙发
wangpe| | 2016-12-11 18:05 | 只看该作者
在C编程中大量使用全局变量是有风险的,虽然有时候使用全局变量也能带来高效率。
比如,全局变量生存中期长,将会占用更多的内存。又比如一个全局变量发生了变化就比较不容易找出是哪里改变的等等。。。

使用特权

评论回复
板凳
langgq| | 2016-12-11 18:07 | 只看该作者
“比如一个全局变量发生了变化就比较不容易找出是哪里改变的”
那看你写汇编的时候咋办。

使用特权

评论回复
地板
wangzsa| | 2016-12-11 18:09 | 只看该作者
汇编也支持局部变量
有的连接器还提供局部变量的智能覆盖

使用特权

评论回复
5
zhuww| | 2016-12-11 18:12 | 只看该作者
一般我是这么做的:能用返回值的话就不会开辟中转的空间;使用位定义,这样也可以大大节省空间

使用特权

评论回复
6
zhanglli| | 2016-12-11 18:15 | 只看该作者
参考消息机制
个人习惯用全局变量

使用特权

评论回复
7
lium| | 2016-12-11 18:17 | 只看该作者
好像位定义中,每个位都分配一个对应的字长单元吧?

使用特权

评论回复
8
guoyt| | 2016-12-11 18:20 | 只看该作者
如果是几万行以内的单片机程序,不用纠结,大胆使用吧

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

而且你单片机的RAM资源不可能使用的那么临界,变量不销毁RAM就不够用?

使用特权

评论回复
9
hanwe| | 2016-12-11 18:23 | 只看该作者
我个人认为全局变量用的比较方便,定义好之后,随便哪里都可以调用,当然,变量在什么时候赋值,这个编程者肯定要十分清楚!

使用特权

评论回复
10
llia|  楼主 | 2016-12-11 18:25 | 只看该作者

一个char型全局全局变量可以定义8个bit变量

使用特权

评论回复
11
yufe| | 2016-12-11 18:27 | 只看该作者
该全局就全局,该局部就局部。

使用特权

评论回复
12
wangpe| | 2016-12-11 18:30 | 只看该作者
多用指针,移植性好

使用特权

评论回复
13
langgq| | 2016-12-11 18:32 | 只看该作者

写库的话 用点指针 还说得过去

平时写程序还是少用指针

使用特权

评论回复
14
zhuww| | 2016-12-11 18:33 | 只看该作者
嗯,至于如何少用,那是要具体问题具体分析了

使用特权

评论回复
15
zhanglli| | 2016-12-11 18:35 | 只看该作者
尽量写高内聚,低耦合的代码,

使用特权

评论回复
16
lium| | 2016-12-11 18:38 | 只看该作者

全局变量,没有避免使用的情况,只有少用的情况。我认为,能用局部变量的尽量用,不能用的情况才用全局变量。

中断函数跟子函数一样的道理,一样都能用局部变量。区别只是,中断条件满足,程序会“智能”的跳到中断函数,子函数要你手动跳转罢了。

使用特权

评论回复
17
guoyt| | 2016-12-11 18:40 | 只看该作者
裸机跑程序,用指针,做参数和返回值均可,单要注意指针类型。带操作系统的用消息机制和指针,其实消息机制也是指针,只是在传输的时候进行了“包装”。

使用特权

评论回复
18
hanwe| | 2016-12-11 18:42 | 只看该作者
没有不使用全局变量的程序,只能是尽量少用,把程序写的尽量高内聚低耦合,模块化设计。函数尽量写成可重入的。对于只使用全局变量而不会修改其值的函数就使用const修饰下以避免在函数中误修改了全局变量。

其实全局变量不可怕,只需要注意哪里是使用这个值,哪里是修改这个值的即可,如果需要多处修改全局变量则要很小心了,最好是一处修改其余各处都是使用这个值。

使用特权

评论回复
19
yufe| | 2016-12-11 18:44 | 只看该作者
全局变量能少用还是少用,多了程序也不一定好理解,尽量使用局部变量。代码比较独立,好调也好移植。

使用特权

评论回复
20
wangpe| | 2016-12-11 18:47 | 只看该作者
尽量少用全局变量,要看你的习惯了。
写子函数的时候,最好想一想,能不能把子函数规范化。就是说,一个子函数,要尽可能的被多次调用,同时也要想想,怎么让这个子函数的作用强大。如果常常这样想,你就会喜欢使用带参数函数,带返回值函数。这样,会常常使用局部变量,所以全局变量就少用了。

使用特权

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

本版积分规则

961

主题

8893

帖子

4

粉丝