5

この欠陥レポートによると、 C ++ 03 Standardは、次のコードでそれを保証するものではありません。

volatile int x;
void f() {
    x;
}

変数はから読み取られます。

次に、揮発性変数の値を読み取り、結果を破棄する(読み取るために読み取る)コードを作成するにはどうすればよいですか?

4

1 に答える 1

5

int i = x;動作するはずです。このコードは絶対に揮発性変数の読み取りを必要とし、オプティマイザーは読み取りを最適化することを許可されていません。ただし、変数iは未使用であるため、オプティマイザーは読み取り値の保管に伴う余分な作業を回避できます。

コンパイラの警告を回避するために、次のようなものも必要になる場合があります。(void)i;

于 2012-12-19T10:44:10.233 に答える