【发布时间】:2014-12-07 02:35:04
【问题描述】:
如果我将 C 代码中的所有变量都声明为 volatile 会发生什么?
据我所知,如何实现 volatile 是特定于实现的,最重要的是编译器不能信任它可能拥有的变量的任何副本。因此,如果我将所有变量都声明为易失性,程序可能会更大并且运行速度更慢。
如果我这样做还有其他问题吗?
【问题讨论】:
-
我知道
volatile的唯一缺点是您已经提到的:每次访问时重新读取值的额外周期。 -
每次代码访问变量时,都必须获取原始值,不能使用寄存器副本。
-
这不仅仅是重新加载。如果编译器发现程序中不需要分配给普通变量的值,它可以消除其计算不存在。对于
volatile变量,它不能这样做。 -
@5gon12eder 这是我不知道的。谢谢。