volatile const int 在 C 中的含义?

Coo*_*der 5 c

我正在读一关于 C的。它提到了一个对我来说没有意义的概念。我所知道的是,编译器有时会通过删除它认为不会影响表达式的变量来优化代码。因此,如果我们为变量指定 volatile,它不会从任何表达式中删除该变量。

所以这本书介绍了这样的东西:

volatile const int a = 1;
Run Code Online (Sandbox Code Playgroud)

解释只有几行,对我来说没有任何意义。有人可以解释一下为什么需要这样的变量吗?

PS:我理解volatile的概念,我不理解的是volatile const的概念。

Gra*_*and 5

volatile const变量是其值可能因外部影响而改变且无法写入的变量。

  • `const` 意味着你不能写入它。这并不意味着价值永远不会改变;该变量可以映射到从传感器读取值的硬件寄存器或其他东西。这就是 `volatile` 的用武之地。 (3认同)
  • 此外,它可能会被 const-cast 改变,或者被另一个没有声明为 `const` 的函数/线程(很常见的方法)改变。 (3认同)