Cepгeй Бopщ (30.04.2010 18:49, просмотров: 86) ответил Vladimir Ljaschko на А расскажите плз про volatile, не понимаю :(
Очень просто. Чтение volatile-переменных может иметь побочные эффекты. Например, чтение UDR у AVR обновляет флаг RXB8. Компилятор не может знать, какие именно эффекты вызовет чтение конкретной переменной в конкретном проце. Если вы напишете в одном выражении "считать RXB8 из UCSRB и добавить его девятым битом к числу, считанному из UDR", компилятор может поменять порядок чтения этих регистров и вы будете считывать RXB8 от следующего байта. Заведите временную переменную для чтения одной из volatile перед вычислением выражения. Забивать на предупреждения - один из вредных советов.
Единственный случай, когда это оправдано - когда предупреждение компилятор генерит ошибочно, например, с PROGMEM константами в режиме С++ в avr-gcc.