名稱空間
變體
操作

errno

來自 cppreference.com
< cpp‎ | 錯誤
定義於標頭檔案 <cerrno>
#define errno /* 實現定義 */

errno 是一個用於錯誤指示的預處理器宏。它擴充套件為一個 靜態(直到 C++11)執行緒區域性(自 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++ 標準。

缺陷報告 應用於 釋出時的行為 正確的行為
LWG 310 C++98 不清楚 errno 是宏
還是具有外部連結的識別符號
errno 必須
是一個宏

[編輯] 參閱

標準 POSIX 相容錯誤條件的宏
(宏常量) [編輯]
將當前錯誤的字串顯示到 stderr
(函式) [編輯]
返回給定錯誤程式碼的文字版本
(函式) [編輯]
C 文件 中的 errno