首页 > 解决方案 > 每次从函数返回时,我可以重置全局变量的值吗

问题描述

我希望函数每次返回时都应将全局变量值重置为 0。

我知道我可以gVar=0;在每个 return 语句之前添加,但这不是我想要的方式,因为新开发人员可能没有这些信息并且可能不会重置gVar值。

要求是

global int gVar = 10;
void fun() 
{
 // Need to modify gVar Here 
  gVar = 15;
  .
  .
  .
  gVar = 20;
  if (some condition)
         return;
  else 
         return; 
..
// more return possible from this function 
// also new developer can add more return statement 
// i want every time function return it should set gVar=0
} 

标签: cfunctionvariablesglobal

解决方案


创建一个析构函数设置gVar为 0 的类,然后在函数开头声明它的一个实例。当函数返回时,变量超出范围并调用析构函数。

class ClearGVar {
public:
    ClearGVar() {}
    ~ClearGVar() { gVar = 0; }
}

void fun()
{
    ClearGVar x;
    ...
} 

编辑:

C++ 标签在此发布后被删除。在 C 中没有很好的方法来做到这一点。


推荐阅读