Могу ли я сбросить значение глобальной переменной каждый раз, когда возвращаюсь из функции - PullRequest
0 голосов
/ 12 июня 2018

Я хочу, чтобы функция каждый раз возвращала значение глобальной переменной в 0.

Я знаю, что могу добавить 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
} 

1 Ответ

0 голосов
/ 12 июня 2018

Создайте класс, деструктор которого устанавливает gVar в 0, а затем объявите его экземпляр в начале функции.Когда функция возвращается, переменная выходит из области видимости и вызывается деструктор.

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

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

РЕДАКТИРОВАТЬ:

Тег C ++ был удален после публикации.Нет хорошего способа сделать это в C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...