名稱空間
變體
操作

浮點環境 (C++11 起)

來自 cppreference.com
< cpp‎ | numeric
 
 
 
浮點環境
函式
(C++11)
(C++11)
(C++11)
(C++11)(C++11)
(C++11)(C++11)
(C++11)(C++11)
(C++11)
(C++11)
宏常量
(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)
(C++11)(C++11)(C++11)(C++11)
(C++11)
 

浮點環境是由實現支援的浮點狀態標誌和控制模式的集合。它是執行緒區域性的。每個執行緒都從父執行緒繼承其浮點環境的初始狀態。浮點操作會修改浮點狀態標誌以指示異常結果或輔助資訊。浮點控制模式的狀態會影響某些浮點操作的結果。

僅當 #pragma STDC FENV_ACCESS 受支援並設定為 ON 時,浮點環境的訪問和修改才有意義。否則,實現可以自由地假設浮點控制模式始終是預設模式,並且浮點狀態標誌從未被測試或修改。實際上,很少有當前的編譯器(例如 HP aCC、Oracle Studio 或 IBM XL)明確支援 #pragma,但大多數編譯器無論如何都允許有意義地訪問浮點環境。

目錄

[編輯] 型別

定義於標頭檔案 <cfenv>
fenv_t
(C++11)
表示整個浮點環境的型別
(typedef) [編輯]
fexcept_t
(C++11)
表示所有浮點狀態標誌的型別
(typedef) [編輯]

[編輯] 函式

(C++11)
清除指定的浮點狀態標誌
(函式) [編輯]
(C++11)
確定哪些指定的浮點狀態標誌已設定
(函式) [編輯]
(C++11)
引發指定的浮點異常
(函式) [編輯]
(C++11)(C++11)
從浮點環境或向浮點環境複製指定浮點狀態標誌的狀態
(函式) [編輯]
(C++11)(C++11)
獲取或設定舍入方向
(函式) [編輯]
儲存或恢復當前浮點環境
(函式) [編輯]
(C++11)
儲存環境,清除所有狀態標誌並忽略所有未來錯誤
(函式) [編輯]
(C++11)
恢復浮點環境並引發先前引發的異常
(函式) [編輯]

[編輯]

浮點異常
(宏常量) [編輯]
浮點舍入方向
(宏常量) [編輯]
(C++11)
預設浮點環境
(宏常量) [編輯]

[編輯] 注意

浮點異常與 C++ 異常無關。當浮點操作引發浮點異常時,浮點環境的狀態會改變,這可以透過 std::fetestexcept 進行測試,但大多數實現上 C++ 程式的執行不會中斷。

有一些編譯器擴充套件可用於在引發浮點異常時自動生成 C++ 異常

  • GNU libc 函式 feenableexcept() 啟用浮點異常的陷阱,這會生成訊號 SIGFPE。如果使用了編譯器選項 -fnon-call-exceptions,該訊號的處理程式可能會丟擲使用者定義的 C++ 異常。
  • MSVC 函式 _control87() 啟用浮點異常的陷阱,這會生成硬體異常,可以透過 _set_se_translator 轉換為 C++ 異常。

[編輯] 另見

C 文件 關於 浮點環境