关键字volatile在C语言下的理解
volatile关键字:防止被编译器优化;下面是在Linux环境下的解释:
*注释:解释下linux下的优化:
Linux下,gcc 是指gcc c编译器。编译选项-O1告诉编译器使用第一级优化。增加优化会使程序执行的更快,但是也会有一定的缺点,它会造成机器代码很大程度的变化,从而使机器码和原代码很难对应起来。从程序方面考虑我们会经常使用第二级优化-O2。这个问题以后介绍。
下来我们看下面代码没有加关键字volatile
通过下面不加优化命令得到结果;
可以看到结果被改变。
通过下面加优化的命令得到结果:
可以看见没有改变。
因为经过优化后的变量会放在寄存器中。前面已经说过寄存器是速度最快的。
下面是加volatile的代码:
可以看到,虽然经过-O2优化,但是加volatile后10还是被改成20;
结论:
volatile关键字是防止编译器对其变量进行优化。
相关推荐
82921934 2019-12-15
ddsdevgroup 2012-06-10
chengdongyuan 2012-04-05
84520193 2020-06-26
Kele0 2020-05-30
网络菜市场 2020-05-11
Bloddy 2020-02-28
少年阿涛 2020-01-17
89467505 2020-01-05
gongruitao 2019-12-27
LUOPING0 2010-08-27
qiaosym 2011-03-02
hbcbgcx 2010-12-04
小路恢宏随手记 2015-07-10
pengjin 2019-11-05
cocleon 2019-11-03
javaxiaoheibai 2019-10-23
讨厌什么变成什么 2019-11-03