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

履歴 編集

macro
<cfenv>

# FE_INVALID(C++11)

    #define FE_INVALID integer-constant-expression
    // または
    #undef FE_INVALID

## 概要

浮動小数点数に対して不正な操作を行ったことを表す浮動小数点例外の種類。

処理系がこの浮動小数点例外に対応している場合にこのマクロが定義される。 マクロが定義されるとき、このマクロは浮動小数点例外の状態を表すビット値である。他の浮動小数点例外マクロとAND (`&`) や OR (`|`)を使用して、複数のマクロを組み合わせて使用できる。

## 例

    #include <iostream>
    #include <limits>
    #include <cfenv>

    int main()
    {
      // NaNから整数への変換
      int result = std::numeric_limits<float>::quiet_NaN();
      if (std::fetestexcept(FE_INVALID)) {
        std::cout << "raised invalid" << std::endl;
      }
      else {
        std::cout << "no error" << std::endl;
      }
    }

### 出力例

    raised invalid

## バージョン

### 言語

- C++11

### 処理系

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