当前位置:网站首页>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
边栏推荐
- Import address table analysis (calculated according to the library file name: number of imported functions, function serial number and function name)
- Temporal model: long-term and short-term memory network (LSTM)
- C language --- advanced pointer
- Unity Shader学习
- CAP定理
- Merging of Shanzhai version [i]
- js正則判斷域名或者IP的端口路徑是否正確
- PHP function
- 负载均衡器
- 北京某信护网蓝队面试题目
猜你喜欢

捡起MATLAB的第(7)天

捡起MATLAB的第(4)天

MySQL集群模式与应用场景

R语言中实现作图对象排列的函数总结

MetaLife与ESTV建立战略合作伙伴关系并任命其首席执行官Eric Yoon为顾问

CAP定理

Import address table analysis (calculated according to the library file name: number of imported functions, function serial number and function name)

Treatment of idempotency

Multi level cache usage

WPS brand was upgraded to focus on China. The other two domestic software were banned from going abroad with a low profile
随机推荐
Spark 算子之sortBy使用
Go concurrency and channel
s16.基于镜像仓库一键安装containerd脚本
R语言中实现作图对象排列的函数总结
PHP classes and objects
多级缓存使用
运维流程有多重要,听说一年能省下200万?
How do you think the fund is REITs? Is it safe to buy the fund through the bank
Use bitnami PostgreSQL docker image to quickly set up stream replication clusters
mysql乐观锁解决并发冲突
Vision of building interstellar computing network
The principle and common methods of multithreading and the difference between thread and runnable
Partitionby of spark operator
Deletes the least frequently occurring character in the string
shell_2
Codejock Suite Pro v20.3.0
VIM specifies the line comment and reconciliation comment
JVM - Chapter 2 - class loader subsystem
【第5节 if和for】
MySQL Cluster Mode and application scenario