博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关键字volatile
阅读量:6368 次
发布时间:2019-06-23

本文共 403 字,大约阅读时间需要 1 分钟。

volatile搞嵌入式的,一定都特别属性这个关键字,记得第一使用这个关键字的时候是在韦东山老师的,Arm裸机视频的时候。volatile是告诉编译不要对这个变量进行任何优化,直接在内存中进行取值。一般用在对寄存器进行赋值的时候,或修饰可能被多个线程访问的变量。

 

简单地说就是防止编译器对代码进行优化.比如如下程序:
1
2
3
4
XBYTE[2]=0x55;
XBYTE[2]=0x56;
XBYTE[2]=0x57;
XBYTE[2]=0x58;
对外部硬件而言,上述四条语句分别表示不同的操作,会产生四种不同的动作,但是编译器却会对上述四条语句进行优化,认为只有XBYTE[2]=0x58(即忽略前三条语句,只产生一条机器代码)。如果键入volatile,则编译器会逐一的进行编译并产生相应的机器代码(产生四条代码).
 
注意:const  volatile  int  i;  应该是定义了一个只读寄存器。
 
 

转载地址:http://ngema.baihongyu.com/

你可能感兴趣的文章
小米联手李嘉诚,长和将在全球17700家门店销售小米设备
查看>>
苹果将推出廉价版iPhoneX,售价直指5000区间,三星颤抖了么
查看>>
工业和信息化部:四个方面扩大升级信息消费
查看>>
春节期间我国出现大范围寒潮、雨雪冰冻天气的可能性较小
查看>>
华为小世界杯来了:从一棵树到一片森林的大赛
查看>>
[贝聊科技] iOS 终极横竖屏切换解决方案
查看>>
黑客真实生活复现 | 十部超赞黑客电影,周末肥宅生活必备!
查看>>
玩转 iOS 开发:NSURLSession 讲解 (一)
查看>>
我的iOS开发内容相关总结
查看>>
Event Loop的规范和实现
查看>>
『React Navigation 3x系列教程』之createStackNavigator开发指南
查看>>
头条系多闪:IM 战线上的另一块战场
查看>>
原生JS操作DOM
查看>>
手写实现一个 HashMap 实战
查看>>
Redis入门第九篇【主从复制】
查看>>
圣杯布局学习总结
查看>>
用 Go 语言理解 Tensorflow
查看>>
MSSQL注射知识库 v 1.0
查看>>
从零学React Native之08Image组件
查看>>
ReactiveCocoa 中奇妙无比的“宏”魔法
查看>>