9764|3

7

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

关于嵌入式C语言中,减少使用全局变量的讨论 [复制链接]

      大家都知道使用全局变量对数据的安全性是不好的,很多公司或者是学校是要求写程序尽量减少或者不许使用全局变量的,。但是,对于一个写嵌入式C语言的菜鸟,我发现我的程序总是有不少的全局变量,于是我也想优化下自己的代码,但一直没有找到可以替代全局变量的好方法,在此请教各位网友,一起来讨论下这个问题。

     我一般使用全局变量的地方主要有下面几个方面:
     1  做标志量,特别是建立起中断函数和普通函数之间联系。例如在中断一次,在中断中改变标志量,,然后在其他模块中根据这个标志量做相应的操作。

     2  模块间通讯,,,比如我从串口中接受到一些数据,然后把他们解析出来,存在一些全局变量中,然后在其他模块中使用这些全局变量。


    C语言不像C++可以把变量封装在类里面,所以对于减少使用或者不用全局变量的办法还是有很多不懂。

最新回复

就是内存管理。一般操作系统是带的。  详情 回复 发表于 2011-7-4 11:28
点赞 关注

回复
举报

2130

帖子

0

TA的资源

五彩晶圆(中级)

沙发
 
1、全局变量有其存在的必然法则,所谓全局变量不安全的论调也是杞人忧天,所有的不安全隐患来源于代码编写的不可靠,是人为因素和规范漏洞。有公司要求减少全局变量这是对的,不许使用全局变量那是非常的不靠谱,系统编程中不止一处需要使用全局变量。在有些操作系统中可以使用系统规定的任务标志代替全局变量,但是这只是全局变量的变形形式,并不是没有使用全局变量。而在某些没有操作系统的系统中就必须也只能使用全局变量了。使用全局变量最基本的一条就是能使用静态全局变量不使用动态全局变量。
2、如果你真的想替代全局变量,其实是有办法的,就是使用单独的内存驱动。这种方法其实就是打肿脸充胖子,也许你觉得这样可靠,但其可靠性并不见得真的就高,而且非常占用资源。
其使用方式很简单,就是要实现4个函数
(1)申请标志
(2)读取标志
(3)更改标志
(4)删除标志
其中申请标志要保证只能使用一次
3、C++封装的概念在于面向对象,但是你要清楚一点C++只是C得扩充,是C的高级实现,所以所有在C++中能实现的功能都可以在C中实现,只不过实现比较复杂一些,如果感兴趣可以去看些C面向对象的书,其教你怎么用C实现面向对象
 
 

回复

7

帖子

0

TA的资源

一粒金砂(中级)

板凳
 

回复 沙发 leang521 的帖子

非常感谢您的解答,您的解答让我醍醐灌顶,对于您上面提到的几点也非常赞同。
但对于您说的内存驱动还不是很清楚,我去查查这方面的资料。
 
 
 

回复

2130

帖子

0

TA的资源

五彩晶圆(中级)

4
 
就是内存管理。一般操作系统是带的。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表