Цитата(Dima_G @ Oct 26 2009, 14:22)

1. Разово нужная переменная постоянно занимает память.
Если разово, то согласен - локальные. Но бывают флаги/состояния, которые нужно хранить от вызова к вызову.
Не забываем также, что речь идёт о программировании контроллеров, а не ПиСи
Цитата
2. программы с глобальными переменными очень плохо читаются (ну это мое субъективное мнение)
3. глобальная - доступна всем желающим (во всей программе, либо в единице трансляции, если это - статик). Можно посадить трудноуловимые баги

.
4, Трудность переноса кода - если функция использует только локальные переменные, ее в общем случае можно просто "взять и выдернуть". Использующая глобальные переменные функция, потянет за собой хвост этих переменных...
И что, предлагаете в мэйне организовать глобальную свалку переменных со всего проекта, а в каждую функцию передавать десяток параметров?
Может, это и правильно с т.з. высоких материй (опять же применительно к PC), но в практической работе очень неудобно.
Я в процессе эволюции пришёл к созданию максимально независимых модулей со своими глобальными и статическими переменными.
Те переменные, которые надо видеть "снаружи" модуля, выношу extern-ом в h-файл модуля.
А main в таком случае состоит из подключения соответствующих модулей через h-файлы, инициализации и быстрого суперцикла.
"Взять и выдернуть" в таком случае можно не отдельную функцию, а модуль. Да и не надо его дёргать, просто подключить и использовать.
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)