全局变量使用
来源:互联网 发布:mysql修改密码语句 编辑:程序博客网 时间:2024/06/08 16:15
为什么使用全局变量:
1) 方便各个函数/模块之间共享数据.
2) 减小函数调用开销
3) 某些应用逻辑上的自然需求
为什么不使用全局变量:
1) 导致程序混乱,调试简直成了恶梦
2) 导致程序可读性大大下降
全局变量使用指南
1) 所有全局变量全部以g开头,并且全部申明成static类型
2) 坚决杜绝跨文件访问全局变量,也就是说坚决不使用extern关键字.如果的确需要再多个文件内访问同一变量,由该变量定义所在文件内提供GET/PUT函数实现.
3) 全局变量必须要有一个初始值.所有的全局变量都放再同一个专门的函数内初始化.
4) 如调用的函数少于三个,请考虑改为局部变量实现.
1) 方便各个函数/模块之间共享数据.
各函数间传递数据完全可以使用参数
不知道模块如何定义,如果是线程/进程级的,那就可以使用消息
2) 减小函数调用开销
全局变量和当前调用的函数可能不在同一段高速缓存中,甚至不在同一页内,可能造成高速缓冲不命中,从而导致额外的高速缓存和页的交换
反而降低效率
3) 某些应用逻辑上的自然需求
只有这个有点可能,但是仍然可以使用参数传递
为什么不使用全局变量:
1) 导致程序混乱,调试简直成了恶梦
2) 导致程序可读性大大下降
如果设计好的话,也不至于如此
全局变量使用指南
1) 所有全局变量全部以g开头,并且全部申明成static类型
编译器比程序员更加清楚一个符号是不是全局变量,而使用符号名称来标明符号性质是一种冗余,带来后续维护的麻烦
2) 坚决杜绝跨文件访问全局变量,也就是说坚决不使用extern关键字.如果的确需要再多个文件内访问同一变量,由该变量定义所在文件内提供GET/PUT函数实现.
3) 全局变量必须要有一个初始值.所有的全局变量都放再同一个专门的函数内初始化.
实际操作中很难做到,很多情况下几个全局变量互相之间存在依赖关系,比如a是由b的值初始化的,b又是由c的值初始化的
正确的做法可以参考effective c++的item 31,虽然是c++的书,但是对c通用适用
4) 如调用的函数少于三个,请考虑改为局部变量实现.
- 全局变量使用
- 全局变量的使用注意
- 如何使用全局变量
- 定义和使用全局变量
- C#全局变量的使用
- [VC]全局变量的使用
- C#全局变量的使用
- c++全局变量的使用
- 使用模块添加全局变量
- C++中使用全局变量
- [VC]全局变量的使用
- 全局变量的使用
- [VC]全局变量的使用
- [VC]全局变量的使用
- Python 之 使用全局变量
- 全局变量应谨慎使用
- android使用全局变量
- C#全局变量的使用
- Visual C++ 确定要使用的链接方法
- 用一辈子去领悟的生活经典
- 静态方法使用类的非静态成员的方法
- 博文收藏地址
- 字符串hash算法比较
- 全局变量使用
- vc++ 显式链接dll
- 有趣的 emacs lisp 教程
- vc++ 隐式链接dll
- vc++ 将可执行文件链接到 DLL
- 基于DSP+μC/OS-Ⅱ的励磁系统的研究
- SRM 421Div2 500
- 爱情向南,幸福向北
- 第二次