【问题标题】:using volatile with all compiler optimizations disabled在禁用所有编译器优化的情况下使用 volatile
【发布时间】:2017-11-02 15:29:19
【问题描述】:

当所有类型的编译器优化都被关闭时,我们是否需要使用 volatile 限定符,假设在我们启用编译器优化时需要它。

我阅读了 SO Volatile and compiler optimization 上的帖子,上面说是,但没有给出任何需要的特定用例。

无论启用或禁用任何类型的优化,有人可以指出仍然需要使用它们的情况。

【问题讨论】:

  • C++ 标准没有规定“编译器优化”。
  • 那么 C 还是 C++? C 和 C++ 是不同的语言,如果你想要一个好的答案,你应该只用一种来标记。最好也标记您想要答案的 C/C++ 版本。也就是说,正如@manni66 所提到的,该标准并未指定此类行为。
  • 一个这样的用例是当您使用指向内存映射地址的指针时。
  • volatile 指定程序必须如何访问表示的值,它与优化相切
  • This SO article 可能很有趣

标签: c++ c compiler-optimization volatile


【解决方案1】:

如果您需要volatile 以使您的程序在优化后正确,那么您也需要它而不进行优化。优化只会在各种不正确状态之间改变不正确的程序。

【讨论】:

  • 只在不同的错误行为之间改变错误程序的行为
猜你喜欢
  • 1970-01-01
  • 2020-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-22
  • 1970-01-01
  • 1970-01-01
  • 2020-10-27
相关资源
最近更新 更多