跳轉到內容

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,用於檔案無法開啟進行讀取的情況。

華夏公益教科書