求助一下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条回答
warship
2019-07-22 13:43
ssssssssssss 发表于 2018-8-10 08:30
也就是说优化等级为0,也会出现这种优化吗

0级优化:

这种优化是很基本的,
你先要明白,我们虽然只是简单的给某变量赋值,
生成汇编代码时往往都需要通用寄存器作为中介的。
i=10汇编后的代码写成C语言相当于:R0=10; R1=i的地址; 然后STR R0,(R1)
就是这么费劲的,然后你马上又来一句j=i;  它会傻到再去取i的值吗? 直接就用R0中现存的值了。

一周热门 更多>