最終更新日時: 2025年07月13日 15時17分26秒 (JST)
Koichi Murase が更新

履歴 編集

macro
<cfenv>

# FE_ALL_EXCEPT(C++11)

    #define FE_ALL_EXCEPT unspecified

## 概要

全ての浮動小数点例外マクロをビットORでつなぐことによって実装で定義されるマクロ。

このマクロは、全ての浮動小数点例外をクリアしたり、全ての浮動小数点例外の状態を取得するような状況で使用する。

## 例

    #include <iostream>
    #include <cfenv>

    int main()
    {
      // ゼロ割りを発生させる
      float result = 1.0f / 0.0f;

      // 全ての浮動小数点例外の状態を取得
      int excepts = std::fetestexcept(FE_ALL_EXCEPT);
      if (excepts & FE_DIVBYZERO) { // 個別の例外送出状態を判定
        std::cout << "zero divided" << std::endl;
      }

      // 全ての浮動小数点例外の状態をクリア
      std::feclearexcept(FE_ALL_EXCEPT);
    }

### 出力例

    zero divided

## バージョン

### 言語

- C++11

### 処理系

- Clang: 3.0 ✅
- GCC: 4.3.0 ✅
- ICC: ??
- Visual C++: 2013 ✅, 2015 ✅
  - コンパイルオプション`/fp:strict`または`#pragma fenv_access (on)`が必要。さもなくば、正しく動作しないおそれがある。