我在书上看到说“volatile关键字用来定义一个变量,保证该变量不被优化器优化。” 可是我还是有点看不懂,比如下面一个例子,循环等待直到地址0XFF被读取。 unsigned int *ctrl; while(*ctrl !=0XFF); 在此例中,*ctrl是一个循环变量表达式,因此循环被优化成单一的内存读取。为了纠正这一点,必须用以下方式说明。 volatile unsigned int *ctrl 此时,*ctrl指针表示指向一个硬件地址,例如中断标志等。
上面这个例子是书上的例子,但我没有看懂,请各位高手给指点一下! |