volatile это инструкция для оптимизатора.
Один из вариантов: Если переменная не изменяется посредством присваивания, допустим мы в нее что-то один раз записали, а потом только читаем. Можно сделать эквивалентную оптимизацию. Выиграть на чтении и записи в переменную, заменив все чтения подстановкой константы. И все будет прекрасно работать если это переменная в памяти. Однако если это регистр, то такая оптимизация недопустима. Слово volatile предотвращает оптимизацию для переменной, оставляя ее переменной.
Поскольку параметры функции не будут оптимизироваться подобным образом, то писать volatile для параметра не обязательно.
Сообщение отредактировал Tarbal - Jan 17 2014, 00:13
|