Volatile的作用是让程序在编译时,编译器不对程序做优化。优化有时候是OK的,但是有时候是自作聪明会造成程序不对。如果你的一个变量是易变的,不希望编译器帮我们做优化,就在这个变量定义时加volatile。
加不加有没有差别,取决于编译器。如果编译器做了优化则有差异; 如果编译器本身没做优化,那就没有差别。
例如:
voild delay(void)
{
volatile unsigned int i = 900000; //volatile 让编译器不要优化,这样才能真正的减
while (i--); //才能消化时间,实现delay
}