volatile关键字的含义?
volatile定义的变量可能会意外的改变,改变它的情况有很多(例如:操作系统,硬件,线程),编译就不会去假设这个值,也就是说每次访问这个变量时,系统就会小心翼翼的去从内存读取这个值,而不是简单的从寄存器中读取这个值。
作用:防止编译器对该变量进行优化。
举例:
1)并行设备的硬件寄存器,存储器映射的硬件寄存器通常加volatile 例如:状态寄存器
2)中断服务程序中修改其他程序检测的变量
3)多线程任务中被共享的变量
扩展:
1.一个变量既可以是const和volatile变量吗?
答:首先volatile修饰时,说明变量是可以改变的;const修饰时,说明寄存器程序不应该去修改。
2.一个指针可以说是volatile吗?
答:可以,例如中断服务中修改指针的指向。
转载:https://blog.csdn.net/lbd321/article/details/76578173
浙公网安备 33010602011771号