【问题标题】:volatile const int meaning in C?volatile const int在C中的含义?
【发布时间】:2013-12-19 15:34:13
【问题描述】:

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

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

volatile const int a = 1;

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

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

【问题讨论】:

标签: c


【解决方案1】:

Volatile const 表示值不能以编程方式更改,但可以间接更改值,例如,如果变量映射到设备寄存器,则值可以由设备修改。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 首先感谢您理解我的问题。但是如果一个变量的值是变化的,那它怎么可能是 const 呢?
    • const 表示您无法写入它。这并不意味着价值永远不会改变;该变量可以映射到从传感器或其他东西读取值的硬件寄存器。这就是volatile 的用武之地。
    • 此外,它可以通过 const-cast 进行更改,或者通过另一个未声明 const 的函数/线程进行更改(非常常见的方法)。
    • @keltar:如果尝试将对象 defined 修改为 const,C 标准没有定义行为。如果代码有一个指向 const 类型的指针,但该指针指向的对象最初并未定义为 const,则允许将指针转换为指向非 const 的指针并通过新指针修改该对象。
    • @EricPostpischil 我更多地谈论的是外部。但是,是的,那个东西也是。
    猜你喜欢
    • 1970-01-01
    • 2015-07-16
    • 1970-01-01
    • 2012-04-19
    • 1970-01-01
    • 2017-08-29
    • 2016-09-29
    • 1970-01-01
    相关资源
    最近更新 更多