一个定义为volatile的变量可能会有意想不到的改变,这样编译器就不会去假设这个变量的值了,精确的说,
就是优化器在用到这个变量时必须每次都小心的重新读取这个值,而不是使用保存在寄存器里的备份。
下面是volatile变量的例子:
1)并行设备的寄存器;
2)一个中断服务子程序中会访问到非自动变量;
3)多线程应用中被几个任务共享的变量。
这三点是区分C语言程序员与嵌入式系统程序员的基本问题。
嵌入式程序员必须懂,因为经常和硬件、中断、等打交道。
一个定义为volatile的变量可能会有意想不到的改变,这样编译器就不会去假设这个变量的值了,精确的说,
就是优化器在用到这个变量时必须每次都小心的重新读取这个值,而不是使用保存在寄存器里的备份。
下面是volatile变量的例子:
1)并行设备的寄存器;
2)一个中断服务子程序中会访问到非自动变量;
3)多线程应用中被几个任务共享的变量。
这三点是区分C语言程序员与嵌入式系统程序员的基本问题。
嵌入式程序员必须懂,因为经常和硬件、中断、等打交道。