ARM技术william hill官网
直播中

申根换

7年用户 1615经验值
私信 关注
[问答]

c语言定义变量时出现了volatile不知道是做什么用的?

变量定义中 volatile 是什么意思 请大侠告诉我一下《ARM 微控制器基础与实战》上 c语言定义变量时出现了 volatile,不知道是做什么用的.C 语言里好像没有这个语法阿!

回帖(4)

张亮

2023-2-28 14:33:09
告诉编译器不要优化掉,volatile 是易变的意思。
举报

张杰

2023-2-28 14:33:15
编译器发现程序始终没有企图改变a的值,那它可能就会优化这段代码,变成while(true)的死循环使得程序执行的更快,然而编译器有时候也会做过度优化,它有时候可能没有意识到程序会改变a的值,却做了这种优化导致程序没有产生预期的行为。
这里为了产生预期的行为,需要阻止编译器做这种优化,可以使用volatile关键字修饰。
举报

王艳

2023-2-28 14:33:28
volatile是一个类型修饰符,
作用是作为指令关键字,一般都是和const对应,确保本条指令不会被编译器的优化而忽略。
举报

张静

2023-2-28 14:33:41
不让编译器进行优化,即每次读取或者修改值的时候,都必须重新从内存或者寄存器中读取或者修改。
volatile的基本应用场合:
1 中断服务程序中修改的供其它程序检测的变量需要加volatile;
2 多任务环境下各任务间共享的标志应该加volatile;
3 存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能由不同意义;
举报

更多回帖

发帖
×
20
完善资料,
赚取积分