Ответ: Квалификатор volatile говорит компилятору о том, что данная переменная
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Bill 27 июня 2003 г. 14:00
В ответ на: Обьясни пожалуйста. Мне казалось статичекой переменной будет достаточно... отправлено puh 27 июня 2003 г. 13:44

может изменяться особым, неизвестным компилятору образом. Как правило, это связано с прерываниями. При работе с этими переменными компилятор отключает оптимизацию. При отсутствии такого квалификатора, компилятор при оптизации может так упростить код, что практически он не будет работать. Хотя логически он будет выглядеть совершенно безупречно.
Т.е. нужно написать
static volatile char f;
А чтобы увидеть разницу, достаточно посмотреть сгенерированный код. И еще. В разных компиляторах (или в разных версиях) генерация и оптимизация выполняются по разному, и поэтому не следует удивляться тому, что одна и та же программа в одних случаях работает, а в других - нет.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru