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

我知道我可以在每个return语句之前添加gVar=0;,但这不是我想要的方式,因为新开发人员可能没有此信息,并且可能不会重置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
}

最佳答案

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

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

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


编辑:

发布后删除了C ++标记。在C中没有很好的方法可以做到这一点。

关于c - 我每次从函数返回时都可以重置全局变量的值吗,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50822563/

10-11 23:00