as-ifルール
From cppreference.com
プログラムの観測可能な動作を変更しない、あらゆるコード変換を許可します。
[編集] 説明
Cコンパイラは、以下のことが真である限り、プログラムに対してあらゆる変更を行うことができます。
| (C11まで) | |
|
1) volatileオブジェクトへのアクセス(読み取りと書き込み)は、それらが出現する式のセマンティクスに厳密に従って発生します。特に、同じスレッド上の他のvolatileアクセスと比較して、順序が変更されることはありません。 |
(C11 以降) |
2) プログラム終了時、ファイルに書き込まれたデータは、プログラムが記述されたとおりに実行された場合とまったく同じです。
3) 対話型デバイスに送信されるプロンプトテキストは、プログラムが入力待ちになる前に表示されます。
|
4) #pragma STDC FENV_ACCESSプラグマがサポートされており、
ONに設定されている場合、浮動小数点環境(浮動小数点例外と丸めモード)への変更は、浮動小数点演算子と関数呼び出しによって、記述されたとおりに実行されたかのように観察されることが保証されます。ただし、以下を除きます。
|
(C99以降) |
[編集] 注釈
| このセクションは未完成です 理由:cpp/language/as_ifと同様に記入します。 |
[編集] 関連項目
| as-if ruleのC++ドキュメント
|