4

最近は移植に関する仕事をしています。_clearfp()、_statusfp() などの一部の Windows API で、対応する関数が Linux で見つからないという問題に遭遇しました。

だから私は助けを求めるためにここにいます。

4

1 に答える 1

6

POSIX システム、または C99 標準の Annex F をサポートする C99 コンパイラが必要です。マクロ__STDC_IEC_559__が定義されているかどうかを確認することで、Annex F がサポートされているかどうかをテストできます。関連する関数は にあります<fenv.h>

int feclearexcept(int excepts); // clears exceptions (returns 0 on success)
int fetestexcept(int excepts);  // returns exceptions that are set

exceptsとして渡され、 によって返される例外はfetestexcept、次のマクロに対してテストできるビットマスクです。

FE_DIVBYZERO
FE_INEXACT
FE_INVALID
FE_OVERFLOW
FE_UNDERFLOW
FE_ALL_EXCEPT

最後のマクロ はFE_ALL_EXCEPT、その上にあるすべてのマクロのビットごとの論理和です。

于 2013-05-31T08:32:39.853 に答える