每次从函数返回时可以重置全局变量的值吗

标签 c function variables global

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

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

要求是

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 中没有好的方法来做到这一点。

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

相关文章:

c - lldb C局部变量不打印

c - 为什么一位 `int` 位域的值是 0 和 −1?

C 客户端服务器回显程序在客户端显示无效消息

c++ - 在 vector 中推回后数字发生变化

javascript - 如何使用 jQuery 将正文类添加到首页和内部页面?

c - gdImageCopy 的图像是灰度的

python - 创建以动态数量的值作为参数的字典

css - 如何在CSS中添加变量和做循环

php多线程变量范围共享问题

MySQL 变量