#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