FENV_ACCESS
|
ヘッダ
| #include <fenv.h>
|
形式
| #pragma STDC FENV_ACCESS 状態切替え指定
|
概 要
| 本プラグマは、プログラムが浮動小数点状態フラグを判定するために浮動小数点環境にアクセスするかもしれない場合、あるいは、プログラムが既定状態以外の浮動小数点制御モードの下で走行するかもしれない場合、処理系にその情報を伝える手段を提供する。
本プラグマは、外部宣言の外側か、あるいは複合文の中のすべての明示的な宣言及び文の前で利用可能である。外部宣言の外側で用いる場合、本プラグマは、それが出現した時点から、他のFENV_ACCESSプラグマが出現するまで、あるいは翻訳単位の終わりまで有効となる。複合文の内側で用いる場合、本プラグマは、それが出現した時点から他のFENV_ACCESSプラグマが出現するまで(入れ子になった複合文も含む)、あるいはその複合文の最後まで有効となる。複合文の終わりでは、このプラグマに対する状態は、その複合文に入る直前の状態に戻る。このプラグマをこれら以外の文脈で使った場合の動作は定義されない。
プログラムの一部が、浮動小数点状態フラグを判定するか、あるいは、浮動小数点制御モードを設定するか、既定状態以外のモード設定の下で走行する場合で、かつ、本プラグマに対する状態が“オフ”で翻訳されている場合、その動作は定義されない。
本プラグマに対する既定の状態(“オン”又は“オフ”)は、処理系定義である(FENV_ACCESS“オフ”で翻訳されたプログラムの部分から、FENV_ACCESS“オン”で翻訳されたプログラムの部分に実行が移る場合、浮動小数点状態フラグの状態は、未規定とし、浮動小数点制御モードは、既定の設定をもつ)。
|
補 足
| 本プラグマの目的は、フラグの判定及びモードの変更を無効にするかもしれない何らかの最適化(たとえば、広域的な共通部分式の削除、コード移動、定数のたたみ込みなど)を可能にすることである。一般的に、FENV_ACCESSの状態が“オフ”の場合、翻訳プログラムは、既定のモードが有効になっており、かつそのフラグは判定されることがない、と仮定することができる。
|