完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
见到一个旧程序,在函数内部的局部变量加上了Volatile.
局部变量不是在堆栈上分配吗,每次调用函数,都会在堆栈上对局部变量重新分配栈内存空间吧. 这样的局部变量volatile有意义吗? 这个局部变是用一个全局变量给赋值的,然后在函数内部参与运算. 有人能分析一下吗 |
|
相关推荐
3个回答
|
|
volatile只是告诉编译器,这个变量是挥发性的,每次<访问>必须<认认真真>的<读取-修改-写>到实际位置,而不能偷懒.
这不单单用在别的地方会修改的场合,还可以用于通知编译器不要优化某个变量. 比如 void delay(void) { uint32 i = 0; for(i = 0; i < 100; i ++) { } } 上面的i,在一些编译器,或者一些编译选项上,是可以被优化的,因为这个i没有输出操作,编译器为了提高运行速度把整个循环删掉是符合规定的,但这不是我们需要的结果. 如果声明成 volatile uint32 i = 0; 编译器就不会优化这个变量,它不管是否外部是否<真的>会修改,都会乖乖的执行所有关于i的操作. |
|
|
|
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
请问下图大疆lightbridge2遥控器主板电源芯片型号是什么?
4465 浏览 1 评论
使用常见的二极管、三极管和mos做MCU和模组的电平转换电路,但是模组和MCU无法正常通信,为什么?
341浏览 2评论
为了提高USIM卡电路的可靠性和稳定性,在电路设计中须注意的点有哪些?
341浏览 2评论
367浏览 2评论
360浏览 2评论
403浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 18:15 , Processed in 1.382143 second(s), Total 82, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号