综合技术
直播中

李研

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

请问C语言中volatile有的作用是什么?

C语言中volatile有什么用作用是什么?
看到一个数组,别人这样写:
volatile unsigned short adc_dma_buf[40];
u32 ADCValue_ActCurr_acc;
u32 ADCValue_ActVolt_acc;
                        for(i=0;i<8;i++)
                        {
                                //adc_dma_buf[i*2+1]=vol_filtering(adc_dma_buf[i*2+1]);//////////////
                                ADCValue_ActCurr_acc+=adc_dma_buf[i*2];
                                ADCValue_ActVolt_acc+=adc_dma_buf[i*2+1];
                        }
按理说循环8次ADCValue_ActCurr_acc和ADCValue_ActVolt_acc前7次都没什么用啊,因为会被第8次覆盖没有移植系统

回帖(6)

肖蕾

2019-10-24 08:20:22
http://www.openedv.com/forum.php ... ;highlight=volatile
举报

贾翠晓

2019-10-24 08:34:22
防止修饰的变量被意外修改,常用于中断中处理的全局变量或者多任务共享的变量
举报

何洁萍

2019-10-24 08:45:11
VOLATILE的作用:作为指令关键字,确保本条指令不会因为编译器的优化而省略,且要求每次直接读值。
一个定义为VOLATILE的变量就是说这个变量可能会被意想不到的改变,这样,编译器就不会去随便假设这个变量的值了。精确的说,优化器在用到这个变量的值的时候,必须每次都小心的重新读取这个变量的值,而不是使用保存在寄存器里面的备份。
参考网络资料。。。
举报

李景天

2019-10-24 08:57:04
常作为修饰全局变量,防止编译器优化,或者因为什么意外而发生意想不到的改变
举报

更多回帖

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