什么是符合C++ 03的从volatile变量中获取值的方法?

sha*_*oth 5 c++ language-lawyer

根据此缺陷报告, C++ 03 Standard不保证在以下代码中:

volatile int x;
void f() {
    x;
}
Run Code Online (Sandbox Code Playgroud)

从中读取变量.

那么如何编写只读取volatile变量值并丢弃结果的代码(为了读取而读取)?

bam*_*s53 5

int i = x;应该管用.此代码绝对需要读取volatile变量,并且不允许优化器优化读取.但由于变量i未使用,优化器可以避免存储读取值所涉及的任何额外工作.

您可能还需要这样的东西来避免编译器警告: (void)i;