C++ ユーザーズガイド

-ftrap=t

起動時に IEEE 754 トラップモードを有効に設定します。

このオプションは、プログラムの初期化時に設定される IEEE 754 トラップモードを設定しますが、SIGFPE ハンドラはインストールしません。トラップの設定と SIGFPE ハンドラのインストールを同時に行うには、ieee_handler を使用します。複数の値を指定すると、それらの値は左から右に処理されます。

t は、次の 1 つの値か、複数の値をコンマで区切ったものです。

t の値

意味 

[no%]division

ゼロによる除算をトラップします [しません]。 

[no%]inexact

正確でない結果をトラップします [しません]。 

[no%]invalid

無効な操作をトラップします [しません]。 

[no%]overflow

オーバーフローをトラップします [しません]。 

[no%]underflow

アンダーフローをトラップします [しません]。 

%all

上のすべてをトラップします。 

%none

上のどれもトラップしません。 

common

無効、ゼロ除算、オーバーフローをトラップします。 

[no%] 形式のオプションは、下の例に示すように、%allcommon フラグの意味を変更するときだけ使用します。これは、特定のトラップを明示的に無効にするものではありません。

IEEE トラップを有効にする場合は、-ftrap=common の設定をお勧めします。

デフォルト

-ftrap を指定しないと、-ftrap=%none が使用されます (トラップは自動的には有効にされません)。

1 つ以上の値を指定すると、それらは左から右に処理されます。したがって、 -ftrap=%all,no%inexact と指定すると、inexact を除くすべてのトラップが設定されます。

相互の関連性

モードは、実行時に ieee_handler(3M) で変更できます。

警告

このオプションを使用してルーチンを 1 つコンパイルした場合は、プログラムのルーチンもすべて同じオプションを使用してコンパイルしてください。そうしないと、予期しない結果が生じることがあります。

-ftrap=inexact のトラップは慎重に使用してください。-ftrap=inexact では、浮動小数点の値が正確でないとトラップが発生します。たとえば、次の文ではこの条件が発生します。

x = 1.0 / 3.0;

このオプションは、メインプログラムをコンパイルするときにだけ有効です。このオプションを使用する際には注意してください。IEEE トラップを有効にするには -ftrap=common を使用してください。

関連項目

ieee_handler(3M) のマニュアルページ