То, что переменная - глобальная, еще ни очем не говорит. Компилятор при оптимизации программы может
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено Bill 10 ноября 2003 г. 13:54
В ответ на: Дорогой Билл отправлено Дима 10 ноября 2003 г. 13:43

выкинуть из цикла перезагузку значения этой переменной. Квалификатор volatile говорит компилятору о том, что данная переменная может изменяться иным, нежели указано в программе (например, по прерываниям) способом. И компилятор не будет считать содержимое данной переменной инвариантным по отношению к циклу, и включит перезагрузку ее в цикл.
Убедиться в этом можно посмотрев сгенерированный код. Можно также попробовать отключить оптимизацию программы и посмотреть код в этом случае, думаю, что будет работать.
Но флажок следует ввести В ЛЮБОМ СЛУЧАЕ.

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

Ответы



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

E-mail: info@telesys.ru