C下的全局变量和指针
在C下面如果申明一个全局变量Itemp,如下使用方式:
- C/C++ code
int iTemp=-1;void iFunction(){ iTemp++;}void main(){ iFunction();}和这样使用指针的方式:
- C/C++ code
void iFunction(int *pTemp){ *pTemp++;}void main(){ int iTemp=-1; iFunction(&iTemp);}其功能都差不多, 但是我看别人的大型工程使用后面的方式,在别人的代码是传递结构体指针。
现在的情况是, 我们公司的代码使用大量的全局变量,(以前听人说过不要用全局变量),
而别人做同样的功能,使用大量的结构体指针传递,这样来说,
但是我实现不是很明白后面一种情况的好处在那里?
请教各位高手。
[解决办法]
如果非要把全局变量的声明放在头文件里, 要么是因为不是函数封装而是宏封装, 而且一定是整个程序唯一的东西.
正确的做法都应该是static变量+extern接口。
[解决办法]
[解决办法]
在涉及多线程或者多任务(嵌入式系统)时,
使不使用全局变量决定函数是可重入性还是不可重入性
[解决办法]
在主循环中使用全局变量而不用动态分配可以大大加强服务程序365×24小时的稳定性!
[解决办法]
全局变量就是一把双刃剑
在大型开发,多人团队中。建议不要用的太多,即使要用一定要做好声明。
免得混乱,特别是人事变动频繁的情况下。
至于一般的项目或者是个人的作品,那就无所谓。knuth还老使用goto语句呢。
另外,直接操作指针相对来说会效率高一点。
[解决办法]
[解决办法]
全局变量并没有错,可以增加程序的稳定性和速度.(这两样是大家最关心的!)
关键:是处理函数的参数传递方式!就是一定要用指针的方式传递,这样对于程序而言,数据和处理是解耦的。
不会影响程序的模块化。
个人:我个人对全局变量,还是比较推荐的,但是任何东西的使用都是有度的否则就是滥用。
推荐:合理使用全局变量;坚决使用指针方式(并不是全部都用指针而是指数据部分大家听明白!)传递参数;使自己的函数具备可重入性(这个似乎和全局相矛盾,其实是可以解决的,不明白的请思考一下。呵呵)。
顺便提出:在嵌入式开发中,全局变量的使用是大量的。其实全局变量也是静态变量,有的系统是全静态的(静态不等于全局啊,不多说了)。呵呵。
[解决办法]
全局变量和指针各有各的好处,主要是在不同情况下用不同的东西,你说你看别人大型工程都用指针方式 ,可能是那个公司的编程习惯吧,一般大型公司的程序员代码写的久了就会养成习惯用某个东西了
需要用全局变量时最好用全局变量,需要用指针时就得用同指针,指针可以说是C/C++里面的神器,而全局变量通常用作一些中断标志(flag)或者全局记数方面的,具体得看情况
个人看法,仅供参考