【3.30签到】每日问答——关键字volatile有什么含意?
29日问题答案问:关键字const有什么含意?
答:1)表示常量不可以修改的变量。
2)可以修饰参数,作为输入参数. 3)修饰函数,防止以外的改动. 4)修饰类的成员函数,不改变类中的数据成员.
------------------------------------------------------------------------------------------------------------今日问题问:关键字volatile有什么含意?
-------------------------------------------------------------------------------------------------------------社区活动火热进行中,速速参与:
1、拼实力、看创意,超低功耗STM32L0方案秀(超低价团购开发板)
2、报名“STM32中国峰会”,144引脚、32引脚STM32开发板统统有!
3、【限时活动】抢楼啦,开发板拿回家 一般说来,volatile用在如下的几个地方:
1、中断服务程序中修改的供其它程序检测的变量需要加volatile;
2、多任务环境下各任务间共享的标志应该加volatile;
3、存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能由不同意义;
另外,以上这几种情况经常还要同时考虑数据的完整性(相互关联的几个标志读了一半被打断了重写),在1中可以通过关中断来实
现,2中可以禁止任务调度,3中则只能依靠硬件的良好设计了。 :) 定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了 :):lol:loveliness: :):):):):):):):) 签到 volatile 是直接寄存器读取值的意思,防止在编译过程中编译器对其进行自动优化。
比如
int a;
a = 5;
a=6;
a=7;
这三行语句执行完a的值为7. 但是编译器可能会自动省略a=5 a=6这两句。
如果是 volatile int a;
a = 5;
a=6;
a=7;
这三行语句执行完a的值为7. 但是编译器不会会自动省a=5a=6这两句。
同理 如果是读取IO电平,系统每次都会读取IO输入寄存器。不会为了效率而进行优化 :lol:lol:lol:lol 签到签到~~~