[an error occurred while processing this directive]
volatile не гарантирует корректоности работы с неатомарными объектами, для этого нужны критические секции, в простейшем случае - запрет прерываний (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено DASM 18 июня 2005 г. 20:46
В ответ на: Вопрос по Volatile для профессионалов отправлено <font color=gray>ema</font> 18 июня 2005 г. 20:36

все что значит volatile - это просто говорит компилятору, что переменная может измениться неведомым ему способом, помогает от ненужной оптимизации вида
int a;
while (a == 0) ;
может быть скопилировано как
lds r16, a
loop:
tst r16
breq loop
в то время как прерывания меняют саму "а" и без volatile будет облом

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

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 
NoIX ключ Запомнить

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


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

E-mail: info@telesys.ru