2

変数を揮発性としてマークすると、コード内のアクセスごとに読み取りが保証されます。

しかし、不揮発性変数はどうですか?

関数/ブロックごとに少なくとも1つの読み取りが保証されていますか、それとも関数の境界を越えて値を最適化できますか?

4

1 に答える 1

3

インライン化(​​挑発されていない、つまり、no inline)がとにかくそれらを根絶できるのであれば、なぜ関数境界が重要なのでしょうか?

IOW:はい、as-ifルールの下ではほとんどすべてが可能です。プログラムがコンパイラーが何も最適化していないかのように動作する限り、プログラムは何でも実行できます。(そして、その基準の境界もかなり曖昧です。たとえば、コピーを削除することはコンパイラーの心のコンテンツに許可されており、欠落している副作用は気になりません。)

于 2012-10-13T23:25:53.197 に答える