用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。在嵌入式系统中,用来作为硬件动作的结果。
例如,通过一个串口接收到一个字符,结果串口状态寄存器更新,这完全在程序流程之外发生。最好就把该寄存器声明为volatile,编译器不会试图优化一个volatile寄存器,而是每次重载它。所以在嵌入式设备的程序中,将所有外设寄存器声明为volatile是一个好习惯。
用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。在嵌入式系统中,用来作为硬件动作的结果。
例如,通过一个串口接收到一个字符,结果串口状态寄存器更新,这完全在程序流程之外发生。最好就把该寄存器声明为volatile,编译器不会试图优化一个volatile寄存器,而是每次重载它。所以在嵌入式设备的程序中,将所有外设寄存器声明为volatile是一个好习惯。