История изменений
Исправление runtime, (текущая версия) :
http://www.barrgroup.com/Embedded-Systems/How-To/C-Volatile-Keyword
A variable should be declared volatile whenever its value could change unexpectedly. In practice, only three types of variables could change:
1. Memory-mapped peripheral registers
2. Global variables modified by an interrupt service routine
3. Global variables accessed by multiple tasks within a multi-threaded application
Я бы ещё отдельным пунктом вынес сигналы. Wikipedia также упомянает setjmp/longjmp.
Исходная версия runtime, :
http://www.barrgroup.com/Embedded-Systems/How-To/C-Volatile-Keyword
A variable should be declared volatile whenever its value could change unexpectedly. In practice, only three types of variables could change:
1. Memory-mapped peripheral registers
2. Global variables modified by an interrupt service routine
3. Global variables accessed by multiple tasks within a multi-threaded application
Я бы ещё отдельным пунктом вынес сигналы.