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

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

__ieee_status(FE_IEEE_MASK_ALL_EXCEPT, FE_IEEE_MASK_DIVBYZERO);

これにより、Example 37 で示すように、コード内のゼロ除算がトラップされ、その他の例外のトラップが無効になります。

Example 37. ゼロ除算エラーのトラップ

#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;
}

Show/hide関連項目

概念
参照

ARM® C ライブラリ、C++ ライブラリ、および浮動小数点サポートリファレンス』

Copyright © 2010-2011 ARM. All rights reserved.ARM DUI 0472EJ
Non-ConfidentialID081711