跳轉到內容

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

華夏公益教科書