如何理解Volatile以及如何使用它

 声明:以上摘抄自“嵌入式Linux那些事”的面试指南,非常好的博主,大家可以去关注他

volatile的使用:

① 编译器很聪明,会帮我们做些优化,比如:

int   a;

a = 0;   // 这句话可以优化掉,不影响a的结果

a = 1;

② 有时候编译器会自作聪明,比如:

int *p = ioremap(xxxx, 4);  // GPIO寄存器的地址

*p = 0;   // 点灯,但是这句话被优化掉了

*p = 1;   // 灭灯

③ 对于上面的情况,为了避免编译器自动优化,需要加上volatile,告诉它“这是容易出错的,别乱优化”:

volatile  int *p = ioremap(xxxx, 4);  // GPIO寄存器的地址

*p = 0;   // 点灯,这句话不会被优化掉

*p = 1;   // 灭灯

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值