errno - cppreference.com
提供: cppreference.com
<tbody> </tbody>
|
|
||
errno はエラーを示すためのプリプロセッサマクロです。 int 型の static (C++11未満) スレッドローカル (C++11以上)な可変左辺値に展開されます。
いくつかの標準ライブラリ関数は、 errno に正の値を書き込むことによってエラーを示します。 一般的には、 errno の値は、 E で始まり大文字または数字が続くマクロ定数として <cerrno> に掲載されている、エラーコードのいずれかに設定されます。
プログラム開始時の errno の値は 0 です。 ライブラリ関数は、エラーが発生したかどうかにかかわらず、正の値を errno に書き込むことが許されています。 ライブラリ関数が errno に 0 を格納することはありません。
例
#include <iostream> #include <cmath> #include <cerrno> #include <cstring> #include <clocale> int main() { double not_a_number = std::log(-1.0); 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'; } }
出力例:
log(-1) failed: Numerical argument out of domain Or, in German, Das numerische Argument ist ausserhalb des Definitionsbereiches
欠陥報告
以下の動作変更欠陥報告は以前に発行された C++ 標準に遡って適用されました。
| DR | 適用先 | 発行時の動作 | 正しい動作 |
|---|---|---|---|
| LWG 310 | C++98 | it is unspecified whether errno is a macro or an identifier with external linkage | errno must be macro |