当前位置:网站首页>Meaning and usage of volatile
Meaning and usage of volatile
2022-04-23 15:55:00 【Sola_ Ex】
volatile The meaning and usage of
Preface
I was asked a few days ago volatile This problem , To tell you the truth, I'm right volatile In fact, it is only limited to the level of preventing from being optimized by the compiler , But I don't know what kind of situation it actually needs to be applied to , So yesterday volatile I studied again , Also decided to write it down and record it .
volatile The definition of
volatile Is a feature modifier , It is a keyword on the compiler , Just follow static、const equally . Its ultimate goal is to prevent the instruction to be executed from being optimized by the compiler .volatile The variable is that it can be changed unexpectedly , such , The compiler will not assume the value of this variable .
effect
It doesn't work very miraculously , Take an example ,
EX1:
In a program like this :
AX_1 = 0;
AX_1 = 1;
AX_1 = 2;
AX_1 = 3;
AX_1 = 4;
No idea , Last AX_1 The value of is 4, But if I ask you , In this code ,AX_1 Have you ever experienced from 0-4 The change of ? The answer is not necessarily , Why? ? Because in different compiler environments , The optimization level of code is different , Even some can be set to no optimization effect . Use Keil As an example ,
Many optimization levels will directly default to -O3 Level of , The higher the optimization level , The size of the resulting firmware may also be smaller , But when programming , I don't pay attention to many details , Will be directly optimized by the compiler . Of course , Under such conditions ,AX_1 It's impossible, manager 0-4 Changing , It will be omitted directly 0-3 The change of , It arrived directly 4. In fact, I also have a question here , hypothesis AX_1 It's a status register ? Of course, it is not common to assign values to registers in this way .
EX2:
Emergencies , Such as interruption .
Actually from volatile The italics in the definition of ,“ This variable may be changed unexpectedly ”, Interruption is doing something like this ? For interrupts , Events can be executed periodically , It can also be executed cyclically , But it's all a sudden treatment , If you suddenly enter the interrupt , Then modify a value , It's actually an unexpected change , Sudden . So for the variables that need to be modified , Use volatile To modify , This problem can be well avoided , Of course, reducing the compiler optimization level may also be achieved , However, such areas that need to be optimized by the compiler have not been optimized , It's a waste of memory , So it's a good thing to write more standardized .
版权声明
本文为[Sola_ Ex]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/04/202204231554163833.html
边栏推荐
- Neodynamic Barcode Professional for WPF V11. 0
- Basic greedy summary
- Master vscode remote GDB debugging
- Go language, condition, loop, function
- 一文读懂串口及各种电平信号含义
- MySQL Cluster Mode and application scenario
- PS add texture to picture
- Config learning notes component
- Use bitnami PostgreSQL docker image to quickly set up stream replication clusters
- Redis主从复制过程
猜你喜欢
Neodynamic Barcode Professional for WPF V11.0
Codejock Suite Pro v20. three
Merging of Shanzhai version [i]
MySQL - MySQL查询语句的执行过程
Application of Bloom filter in 100 million flow e-commerce system
Codejock Suite Pro v20.3.0
R语言中绘制ROC曲线方法二:pROC包
捡起MATLAB的第(8)天
Temporal model: long-term and short-term memory network (LSTM)
ESP32编译环境的搭建
随机推荐
北京某信护网蓝队面试题目
PS为图片添加纹理
C language self compiled string processing function - string segmentation, string filling, etc
s16. One click installation of containerd script based on image warehouse
utils. Deprecated in35 may be cancelled due to upgrade. What should I do
Open source project recommendation: 3D point cloud processing software paraview, based on QT and VTK
Import address table analysis (calculated according to the library file name: number of imported functions, function serial number and function name)
【自娱自乐】构造笔记 week 2
Best practices of Apache APIs IX high availability configuration center based on tidb
Leetcode-374 guess the size of the number
s16.基于镜像仓库一键安装containerd脚本
【第5节 if和for】
IronPDF for . NET 2022.4.5455
Do we media make money now? After reading this article, you will understand
How do you think the fund is REITs? Is it safe to buy the fund through the bank
Vision of building interstellar computing network
Compile, connect -- Notes
CVPR 2022 quality paper sharing
捡起MATLAB的第(8)天
The principle and common methods of multithreading and the difference between thread and runnable