volatile
(1) volatile是一个**特征修饰符**(type specifier).
(2)volatile的作用是作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值。
(3)volatile(*不稳地的,反复的*)的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。
(4)volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据
(5)volatile关键字如果没有,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。
vu8 key=0;
typedef __IO uint8_t vu8;
-------》
#define __IO volatile /