> -- Geniepro писал(а):
> Эта проблема легко решается использованием нормального компилятора, который выдаёт предупреждения о перекрытии переменных объемлющего уровня переменными внутреннего уровня (в Вашем случае перекрытие глобальных переменных локальными).
Ага. И потом половина программёров включают warning off.

> -- Цитата:
> Кроме того, от глобальных переменных нужно отказываться. К этому даже Вирт начал призывать.
Одно лишнее слово "даже" - и уже ложь (преднамеренная или непреднамеренная).
Структурное и модульное программирование уже много-много лет в этому призывает. Глобальных вообще переменных как таковых и нет. Все локализованные в том или ином модуле с тем или иным временем жизни.
В большинстве случаев, когда речь не идёт о системе с состояниями, предполагается, что переменные локализуются в процедуре со временем жизни = её активации.

Если Вам не даёт спать идея вообще отказа от состояний - то это проблемы ФП-шников. Нефизично исключать важное понятие, присутствующее в реальном мире. В мат. играх - конечно, можно. Занятно, интересно, иногда познавательно.