函数返回全局变量的好处

最近看程序,发现很多程序员喜欢通过函数操作全局变量,通过函数返回全局变量。

逛了一下论坛,发现通过函数操作全局变量有很多好处。


首先在一个文件中用 static 定义全局变量,如:

static int flag;//只能在本文件中使用,避免了别的文件误用本变量

/*获得全局变量的值*/
int get_flag(void)
{
    return flag;
}
/*设置全局变量的值*/
void set_flag(int flag_set)
{
    flag = flag_set;
}

别的文件,如果要操作 flag 的值,可以通过 以上两个函数来间接操作。这样做有什么好处呢?

1、static 修饰,限制全局变量的使用范围,避免别的文件误操作。

2、把全局变量封装成函数操作,方便查找,便于调试。如果定位到错误发生于全局变量 flag 上,你会查找哪些操作改动了全局变量 flag,但你全局搜索该变量 flag 时,发现居然300处,你怎么调式?怎么排除?这是很麻烦的事儿,实际工程中,大多数地方都是用来比对的,只有很少的地方是用来修改全局变量的,所以如果封装成了函数 set_flag(),就可以直接搜索函数名称 set_flag 就能清楚明白地知道哪些地方修改了该变量。

3、效率问题,如果使用 __INLINE 修饰函数,效率就很高,跟直接操作变量没啥区别。

猜你喜欢

转载自blog.csdn.net/zhangyunshengblog/article/details/49815689
今日推荐