errno
|
ヘッダーで定義
<cerrno>
|
||
|
#define errno /* implementation-defined */
|
||
errno はエラー表示に使用されるプリプロセッサマクロです。これは static (until C++11) thread-local (since C++11) 型の変更可能な左辺値に展開されます。 int 。
いくつかの標準ライブラリ関数は、正の整数を
errno
に書き込むことでエラーを通知します。一般的に、
errno
の値は、
<cerrno>
に列挙されているマクロ定数のいずれかに設定されます。これらのエラーコードは、文字
E
で始まり、大文字または数字が続く形式を持ちます。
プログラム起動時には errno の値は 0 であり、ライブラリ関数はエラーの有無にかかわらず正の整数を errno に書き込むことが許可されていますが、ライブラリ関数は決して 0 を errno に格納しません。
例
#include <cerrno> #include <clocale> #include <cmath> #include <cstring> #include <iostream> int main() { const double not_a_number = std::log(-1.0); std::cout << not_a_number << '\n'; if (errno == EDOM) { std::cout << "log(-1) failed: " << std::strerror(errno) << '\n'; std::setlocale(LC_MESSAGES, "de_DE.utf8"); std::cout << "Or, in German, " << std::strerror(errno) << '\n'; } }
出力例:
nan log(-1) failed: Numerical argument out of domain Or, in German, Das numerische Argument ist ausserhalb des Definitionsbereiches
不具合報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | 適用対象 | 公開時の動作 | 正しい動作 |
|---|---|---|---|
| LWG 310 | C++98 |
errno
がマクロか外部リンケージを持つ識別子か
明確でなかった |
errno
は
マクロでなければならない |
関連項目
|
標準的なPOSIX互換のエラー条件に対するマクロ
(マクロ定数) |
|
|
現在のエラーに対応する文字列を
stderr
に表示する
(関数) |
|
|
指定されたエラーコードのテキスト版を返す
(関数) |
|
|
Cドキュメント
for
errno
|
|