继续总结关键字的作用,和小伙伴们一起分享。本文仅对 volatile 的作用进行解析,另外几个,小编会陆续发出。
一个定义为 volatile 的变量是指这个变量有可能会被意想不到的改变。声明为 volatile 后,编译器就不会在编译时对这个变量进行优化。
即,每次使用这个变量的时候,都会重新读取这个变量的值,而不会使用保存在寄存器里的备份。例如:
(1)并行设备的硬件寄存器(如状态寄存器)需要声明为 volatile;
(2)一个中断服务子程序中会访问到的非自动变量需要声明为 volatile;
(3)多线程应用中被几个任务共享的变量。
一个参数既可以是const,又可以是volatile,例如只读的状态寄存器,它是 volatile 是因为它会被意想不到的改变,是 const 是因为只读的状态寄存器不应该被改变。
一个指针也可以是 volatile,例如一个中断服务子程序中修改一个指向buffer的指针,该指针应该声明为 volatile。
阅读(1252) | 评论(0) | 转发(0) |