名前空間
変種
操作

errno

From cppreference.com
< cpp‎ | error
 
 
 
ヘッダー <cerrno> で定義
#define errno /* 実装定義 */

errno は、エラーを示すために使用されるプリプロセッサマクロです。これは、int 型の静的(C++11まで)スレッドローカルな(C++11以降)変更可能な左辺値に展開されます。

いくつかの標準ライブラリ関数は、正の整数を errno に書き込むことでエラーを示します。errno の値は通常、文字 E とそれに続く大文字または数字で始まるマクロ定数として <cerrno> にリストされているエラーコードのいずれかに設定されます。

プログラム開始時、errno の値は 0 であり、ライブラリ関数はエラーが発生したかどうかにかかわらず正の整数を errno に書き込むことが許可されていますが、ライブラリ関数は 0errno に格納することはありません。

[編集]

#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 に表示する
(関数) [編集]
与えられたエラーコードのテキスト版を返す
(関数) [編集]
English 日本語 中文(简体) 中文(繁體)