C 中整型变量可以同时具有 const 和 volatile 限定符吗?

use*_*285 1 c constants volatile

我想知道这是否可行以及可以在哪里应用类似的东西。我在某个地方被问到这个问题,我的想法是,对于你知道其值不会改变或者更确切地说你不想改变的东西,你会有一个 const 。然而,根据定义,易失性变量可以随时更改,甚至可以通过当前范围之外的代码进行更改。所以在我看来,这两个限定词是相互矛盾的。

Ada*_*dam 6

是的,在某些情况下它是有意义的。总之,aconst volatile意味着代码不能更改变量的值,但程序外部的东西可以。一些用例包括:

  • 只读硬件寄存器

  • 只读共享内存缓冲区,一个 CPU 进行写入,另一个 CPU 只进行读取

这是一篇包含更多详细信息的好文章:http://embeddedgurus.com/barr-code/2012/01/combining-cs-volatile-and-const-keywords/