韦东山Linux嵌入式课程社区
直播中

郑俊杰

7年用户 156经验值
私信 关注

请问关键字volatile该什么时候用?

这东西的概念我懂,但是实际编程时,关键字volatile该什么时候用啊,求大神来点经验之谈!

回帖(7)

崔业萍

2019-4-28 13:36:53
我也想知道。可能是一些你定义了,不想被编译器优化掉的变量如地址之类的才用到。至于想知道有没有被优化掉,得看反汇编文件
举报

林邵嫔

2019-4-28 13:42:29
谢谢好心人!!
举报

谭子薇

2019-4-28 13:51:13
其实最简单的例子就是下面这个

void delay()
{
     int i;
     for(i = 0; i <  5000;i++)
}
如果 i 没有定义成volatile上面的这个延时函数可能就没有作用,编译器认为你这段程序没有任何意义就会优化掉。
当然有些编译器也许能明白你这段函数的意义就不会优化掉
举报

李琳

2019-4-28 14:09:59
1.用于访问硬件寄存器
2.中断里会改写的变量
3.会被多个线程共享的变量
举报

更多回帖

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