Ну раз пошла такая пьянка (с привлечением стандартов) то читаем:
Цитата
6.2.4 Storage durations of objects
...
3 An object whose identifier is declared with external or internal linkage, or with the storage-class specifier static has static storage duration. Its lifetime is the entire execution of the program and its stored value is initialized only once, prior to program startup.
Таким образом, выкинуть компилятор ее не может при всем желании, так как Its lifetime is the entire execution of the program
Цитата(Сергей Борщ @ Oct 7 2010, 21:11)

Ключевой момент - "Если результат такой записи не используется". Т.е. если вы не читате из такой переменной, а только пишете, то такая запись - бесполезная трата тактов процессора. Я не уверен, является ли присвоение адреса переменной указателю сигналом о том, что результат записи где-то потребуется и не смог найти упоминания об этом в стандарте.
А что по-вашему означает "использование" переменной? Как раз присвоение ее значения другой или передача как параметра в функцию. И выкидывать запись в нее компилятор тоже не может, так как это значение может понадобиться функции при последующих входах, она ведь полагается на то, что оно сохранится поскольку Its lifetime is the entire execution of the program.
Цитата(Itch @ Oct 8 2010, 05:01)

это смотря как накрутить ему уровень оптимизации.
Оптимизация здесь совершенно ни при чем. Поведение static переменных регламентируются стандартом.
Цитата(Itch @ Oct 8 2010, 05:01)

в режиме отладки обычно оптимизацию вообще отключают
Оптимизацию отключают только... альтернативно одаренные люди. Мне кажется что сама возможность ее отключения оставлена для того, чтобы пользователь мог отключив ее убедиться что виноват не оптимизатор, а его программа.
ЗЫ. Тут недавно проскакивал пост в котором один такой юзер удивлялся почему AVR-ка не выполняет запись в EEPROM хотя у него все написано правильно:
EECR |= _BV(EEMPE);
EECR |= _BV(EEPE);
правда у него зачем-то оптимизация была отключена в результате для этого кода генерировался десяток команд, а EEMPE действительно лишь на протяжении четырех клоков...
Цитата(SasaVitebsk @ Oct 7 2010, 22:19)

В целом я согласен с Сергей Борщ. Особенно зная его квалификацию.
Понравилос

По таким постам легко отличать верующих от атеистов. Для верующих сила авторитета сильнее стандарта Си.