为什么我定义的变量被优化掉了?

frank_yufu 2004-12-26 08:11:24
我在程序中定义了一个变量,但是程序运行的时候我发现这个变量被优化掉了,这个变量是使用了的.这是怎么回事?我用的是ADS,怎么做可以防止变量被优化掉?
...全文
899 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
joyfly 2004-12-28
  • 打赏
  • 举报
回复
volatile是易失性的意思
我们都知道CPU会有CACHE,有些变量,数据在CACHE里有备分,CPU要访问他们的时候,就会从CACHE拿, 而不再到MEMORY或DEVICE上去读,这样可以加快访问速度.
声明变量时加volatile,就是让CPU每次访问这个变量都从MEMORY上去读,而不从CACHE里取.这样可以保证每次用到的值都能与它实际在MEMORY上存储的值是一致的.

volatile一般用来声明设备或内存的物理地址的时候用得比较多.
91program 2004-12-28
  • 打赏
  • 举报
回复
volatile 是一直刷新此变量,不让它被优化掉,就算不使用也不会被优化掉。
frank_yufu 2004-12-28
  • 打赏
  • 举报
回复
这样做确实可以解决,但是我搞不明白这个volatile到底起什么作用,看了一些网上的文章,一头雾水。
joyfly 2004-12-27
  • 打赏
  • 举报
回复
变量声明前加volatile,比如
volatile int i;
for (i=0; i<1000; i++);

19,500

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧