volatile的语法和const的是一样的,但是volatile的意思是“在编译器认识的范围外,这个数据可以改变”。环境正在改变数据(可能通过
多任务、多线程或者中断处理),所以,volatile告诉编译器不要擅自做出有关该数据的任何假定,优化期间尤其如此。
如果编译器说:“我已经把数据读进寄存器,而且再没有与寄存器接触”。一般情况下,它不需要再读这些数据。但是,如果数据是volatile修饰的,编译 器就不能做出这样的假定,因为这个数据可能被其他进程改变了,它必须重读这个数据而不是优化这个代码来消除通常情况下那些冗余的读操作代码。
volatile的语法与const是一样的,为指明可以选择两个中的任何一个,把他们连在一起统称为c-v限定词(c-v qualifier)。
如果编译器说:“我已经把数据读进寄存器,而且再没有与寄存器接触”。一般情况下,它不需要再读这些数据。但是,如果数据是volatile修饰的,编译 器就不能做出这样的假定,因为这个数据可能被其他进程改变了,它必须重读这个数据而不是优化这个代码来消除通常情况下那些冗余的读操作代码。
volatile的语法与const是一样的,为指明可以选择两个中的任何一个,把他们连在一起统称为c-v限定词(c-v qualifier)。
本文详细解释了volatile关键字的作用及使用场景。volatile用于标记那些在编译器认知范围之外可能会被外部因素(如多线程或中断处理)改变的数据,以防止编译器对这些数据进行不恰当的优化。
1245

被折叠的 条评论
为什么被折叠?



