Цитата(torik @ Oct 26 2009, 11:20)

Я следую такому правилу - делать переменную глобальную только в том случае, когда без этого - никак (например, по другому никак не передать данные в/из обработчик прерываний и тд).
Где-то вычитал правило и согласен с ним. Звучит как-то так:
"Предпочитайте локальные переменные - глобальным, глобальные статические - просто глобальным"
Цитата(MrYuran @ Oct 26 2009, 12:47)

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

.
4, Трудность переноса кода - если функция использует только локальные переменные, ее в общем случае можно просто "взять и выдернуть". Использующая глобальные переменные функция, потянет за собой хвост этих переменных...