C 程式設計/errno.h
外觀
< C 程式設計
(重定向自 C 程式設計/C 參考/errno.h)errno.h 定義了宏,透過儲存在名為 errno 的靜態位置的錯誤程式碼來報告錯誤條件。
當某些庫函式檢測到錯誤時,會在 errno 中儲存一個值。程式啟動時,儲存的值為零。庫函式只儲存大於零的值。任何庫函式都可以改變儲存的值,無論它們是否檢測到錯誤。大多數函式透過返回一個特殊值來指示它們檢測到錯誤,對於返回指標的函式通常為 NULL,對於返回整數的函式通常為 -1。一些函式要求呼叫者將 errno 預設為零,然後在之後測試它,以檢視是否檢測到錯誤。
errno 宏擴充套件為一個型別為 int 的左值,包含在任何使用 errno 機制的函式中生成的最後一個錯誤程式碼。最初這是一個靜態記憶體位置,但宏今天幾乎總是用於允許多執行緒,每個執行緒將看到它自己的錯誤號。
標頭檔案還定義了宏,它們擴充套件為表示錯誤程式碼的整數常量。C 標準只要求定義三個
EDOM
- 結果來自函式域之外的引數,例如
sqrt(-1)
ERANGE
- 結果來自函式範圍之外的結果,例如
strtol("0xfffffffff",NULL,0)
EILSEQ
- 結果來自非法位元組序列,例如
mbstowcs(buf,"\xff", 1)(如果多位元組編碼為 UTF-8)。
符合 POSIX 的作業系統(如 UNIX 或 Linux)包含許多其他錯誤值,其中許多比上述錯誤值使用得更多,例如 EACCES,用於檔案無法開啟進行讀取的情況。