求助一下C语言中的volatile作用

2019-07-21 08:25发布

我发现stm32f10x.h文件里进行了宏定义#define     __O     volatile                  /*!< defines 'write only' permissions     */#define     __IO    volatile                  /*!< defines 'read / write' permissions   */
但是通过网上查询对volatile没有太明白,想请问一下各位有没有什么简单的理解方式,我不要求太深入、太专业,只要能让我这个新人简单明白大概的作用即可,能举出例子更好。
非常感谢各位的教导!


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
23条回答
SimpleLife
2019-07-22 17:01
本帖最后由 SimpleLife 于 2018-8-10 09:17 编辑

volatile作用:无论何时,编译器读取变量都从地址上读取。
情况:在某些编译器下,编译器优化读取方式,若某段时间内程序没有对变量进行改变,编译器读取的值为上次的值。
例子:
PA5,在某段时间内,程序没有对PA5进行设置,在下次读取时,编译器会自动把上个值直接读取出来,
如果PA5是输入口,电平改变了,编译器是不知道的,读取的只能为上次读取的值,
这个时候volatile的作用提现出来了:无论何时,读取变量都从地址上读,这样保证了读取到的值是实时的,准确的。

一周热门 更多>