5.56 ソフトウェアでのゼロによる浮動小数点除算エラーのトラップについて

ソフトウェアでのゼロによる浮動小数点除算エラーをトラップするには、__ieee_status コンパイラ組み込み関数を使用します。

__ieee_status(FE_IEEE_MASK_ALL_EXCEPT, FE_IEEE_MASK_DIVBYZERO);
これにより、以下の例で示すように、コード内のゼロ除算エラーがトラップされ、その他の例外のトラップが無効になります。
#include <stdio.h>
#include <fenv.h>
int main(void)
{    float a, b, c;
    // 無効演算例外のトラップを有効にし、他のすべての例外のトラップを
    // 無効にする:
    __ieee_status(FE_IEEE_MASK_ALL_EXCEPT, FE_IEEE_MASK_DIVBYZERO);
    c = 0;
    a = b / c;
    printf("b / c = %f, ", a); // ゼロ除算エラーをトラップする
    return 0;
}
関連する概念
5.55 C コードのソフトウェアでのゼロによる浮動小数点除算エラー
5.57 ソフトウェアでのゼロによる浮動小数点除算エラーの識別
5.58 ソフトウェアでのゼロによる浮動小数点除算エラーのデバッグ
関連情報
__ieee_status()
非機密扱いPDF file icon PDF 版ARM DUI0472LJ
Copyright © 2010-2015 ARM.All rights reserved.