C 程式設計/errno.h
外觀
< C 程式設計
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。