C++常量与易失性
C++ const vs volatile
根据我在网上和SO上读到的内容:
常量:
- 告诉编译器不得使用程序说明。
- 因此,编译器可以优化代码。
挥发性的:
- 变量是常量,但可以从程序外部更改。
- 告诉编译器每次从内存中读取变量的值。
- 告诉编译器不要对此变量使用优化。
如果我的理解是正确的,那么如此不稳定只是另一种常量。
那么,像下面这样的一行是什么意思?
const volatile char A = 'C';
不,volatile
不是"另一种const
"。 volatile
并不意味着"变量是恒定的"。
否则,您的观点是准确的。因此,const volatile
意味着:
- 阻止程序员在对象初始化后修改对象(这是
const
部分( - 外部机制仍可能修改其值,因此每次请求读取时都必须从"内存"中检索该值,而不是通过优化进行缓存(这是
volatile
部分(
相关文章:
- 易失性sig_atomic_t的内存安全性
- C++易失性:保证 32 位访问?
- 避免易失性和非易失性成员函数的代码重复
- 当 2 个线程共享同一物理内核时,具有错误共享的易失性增量在发布中的运行速度比在调试中慢
- 如何访问常量易失性 std::array?
- 为什么在 C++20 中弃用易失性?
- 根据 MSVC,具有易失性成员的结构不再是 POD
- 是否允许编译器优化掉局部易失性变量
- 访问共享内存而不使用易失性、std::atomic、信号量、互斥锁和自旋锁
- 如何避免对无锁程序使用易失性?
- 兼容的声明 __attribute__ ((节( ".abc.dfe" ))) 常量易失性 uint8 属性变量 = 0;- 符合MISRA标准
- C++常量与易失性
- 常量 & 指非易失性变量。变量将更改。更改是否使常量 & 无效?
- 如何使用 LLVM 传递使变量易失性或常量
- std::remove_pointer 无法删除 VS2012 上的常量易失性函数指针
- 从指针或引用中抛弃常量/易失性
- 为什么对易失性 int 的常量引用需要static_cast
- 如何用libclang找出成员函数是常量还是易失性
- C++中易失性成员函数与常量成员函数的比较
- 类型为"const CompareVPtrs"的表达式将丢失一些常量易失性限定符以调用