pragma
<cfenv>

FENV_ACCESS

on (1)
#pragma STDC FENV_ACCESS on
off (2)
#pragma STDC FENV_ACCESS off
訪問浮點數環境
如果設定為 on,程式會通知編譯器它可能訪問浮點數環境來測試其狀態標誌(異常)或在預設以外的控制模式下執行。

如果設定為 off,編譯器可以執行某些可能破壞這些測試和模式更改的最佳化,因此在這種情況下訪問浮點數環境會導致未定義行為

此 pragma 指令的預設狀態是 on 還是 off 取決於編譯器設定和庫實現。

pragma 指令宣告應該出現在
  • 任何外部宣告之外: 其效果會一直持續到遇到另一個 FENV_ACCESS pragma 指令,或者直到翻譯單元結束。
  • 在複合語句內部: 這種情況下,它應該出現在所有顯式宣告和語句之前。其效果會一直持續到遇到另一個 FENV_ACCESS pragma 指令(例如在巢狀的複合語句中),或者直到複合語句結束。在複合語句之後,pragma 指令的狀態會恢復到進入複合語句之前的狀態。
如果此 pragma 指令出現在其他上下文中,則行為是未定義的。

當透過此 pragma 指令更改狀態時,浮點數控制模式(例如舍入方向)會恢復到其預設設定,但浮點數狀態標誌的狀態是不確定的。

另見