errno
來自 cppreference.com
定義於標頭檔案 <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
|