修饰符volatile用来说明一个变量或对象的值不仅可以由程序中的代码来改变,而且可以被其他一些没有显式说明的方式所改变,比如操作系统、硬件或正在执行的其他线程等。许多编译器假定表达式内部变量的内容不变化,然后根据这一假定来优化表达式。还有一些编译器还可能改变表达式的计算顺序,修饰符volatile的引入可以防止这些可能发生的改变。volatile可以与const一起使用。例如,端口号为0x30的数值只能由外部条件来改变,那么
采用下面的说明方式就可以防止程序代码中所产生的偶发副作用:const volatile unsigned char * port = (const unsigned char*)0x30;
说明:因为有了const的修饰,所以一般的程序代码不可以更改指针指向的内容;又由于有
volatile的修饰,所以可以通过硬件改变指针指向的内容。