_fpreset

提供: RAD Studio
移動先: 案内検索

float.h:インデックス への移動


ヘッダーファイル

float.h

カテゴリ

演算ルーチン

プロトタイプ

void _fpreset(void);

説明

浮動小数点演算パッケージを再初期化します。

_fpreset は,浮動小数点演算パッケージを再初期化します。通常,この関数は,system 関数,exec... 系関数,または spawn... 系関数と組み合わせて使用されます。また,longjmp を呼び出す前に浮動小数点エラーから回復するためにも使用されます。

メモ: 80x87 コプロセッサがプログラムで使用される場合は,子プロセス(system 関数,exec... 系関数,または spawn... 系関数によって実行される)が親プロセスの浮動小数点状態を変更することがあります。

  • 80x87 を使用する場合は,次の点に注意します。
  • 浮動小数点式の評価中に,system 関数,exec... 系関数,または spawn... 系関数を呼び出さないようにします。

子プロセスが 80x87 で浮動小数点操作を行った可能性がある場合は,system 関数,exec... 系関数,または spawn... 系関数を使用した後で _fpreset を呼び出して,浮動小数点状態をリセットします。

戻り値

なし。

コード例

#include <process.h>
#include <float.h>
#include <stdio.h>

int safe_fpu_exec(wchar_t* program)
{
  /* Spawn another process with NOWAIT flag */
  int pid = _wspawnl(P_NOWAIT, program, NULL);
  int exitCode;

  /* Check for error */
  if (pid == -1)
    return -1;

  /* Wait for the application to finish */
  cwait(&exitCode, pid, 0);

  /* Reset the FPU state since the child process might have altered it */
  _fpreset();

  return exitCode;
}

移植性

POSIX Win32 ANSI C ANSI C++

+