#errno.h

errno 変数

errno.h は、エラー コード (正の整数) を格納する int 型の errno 変数を宣言します。

この変数の値がゼロ以外の場合、実行されたプログラムでエラーが発生したことを示します。

int x = -1;

エラー番号 = 0;

int y = sqrt(x);

if (errno != 0) {
  fprintf(stderr, "sqrt エラー; プログラムは終了しました。\n");
  終了(EXIT_FAILURE);
}

上記の例では、負の値の平方根を計算することは許可されていないため、「errno」が「0」に等しくなくなります。

関数内でエラーが発生したかどうかを確認したい場合は、他の関数が errno の値を変更しないように、関数を呼び出す直前に errno の値を 0 に設定する必要があります。

マクロ

変数 errno の値は通常、2 つのマクロ EDOM または ERANGE です。どちらのマクロも errno.h で定義されています。これらは、数学関数を呼び出すときに発生する可能性のある 2 つのエラーを表しています。

  • ドメイン エラー (EDOM): 関数に渡された引数が関数のドメインの外にあります。たとえば、負の数値は引数として sqrt() に渡されます。
  • 値の範囲エラー (ERANGE): 関数の戻り値が大きすぎるため、戻り値の型で表すことができません。たとえば、e^1000 は double 型を使用して表現するには大きすぎるため、1000 がパラメータとして exp() に渡されます。

数学関数を使用する場合、「errno」の値を EDOM および ERANGE と比較して、発生したエラーの種類を判断できます。


作者: wangdoc

アドレス: https://wangdoc.com/

ライセンス: クリエイティブ・コモンズ 3.0