我看到有可能做到,但我不明白这种兴趣。
2 回答
const
volatile
听起来他们在变量上引用了相同的想法,但他们没有。const
当前代码无法更改变量。变量可能会被当前代码之外的volatile
某个外部实体更改。可能有一个const volatile
变量——尤其是像内存映射寄存器这样的变量——在你的程序无法预测的时候被计算机改变,但你的代码不允许直接改变。您可以使用向变量const_cast
添加或删除const
或(“cv-qualification”)。volatile
const
并且volatile
是正交的。
const
表示数据是只读的。
volatile
意味着变量可能由于外部原因而发生变化,因此编译器每次引用时都需要从内存中读取变量。
因此,删除const
允许您编写原本只读的位置(代码必须具备一些特殊知识,该位置实际上是可修改的)。您不应该删除volatile
来编写它,因为您可能会导致未定义的行为(由于 7.1.5.1/7 - If an attempt is made to refer to an object defined with a volatile-qualified type through the use of an lvalue
with a non-volatile-qualified type, the program behaviour is undefined.
)