errno.h 標頭檔案定義了整數變數 errno,它是通過系統呼叫設定的,表明在錯誤事件中的某些庫函式發生了錯誤。它可以被乙個程式讀取和修改。 在程式啟動時,errno 設定為零,c 標準庫中的特定函式修改它的值為一些非零值以表示某些型別的錯誤。您也可以在適當的時候修改它的值或重置為零。
extern
int*
__error
(void);
//返回值為int* 的指標函式;
#define errno (*__error())
//*__error() 是int值。
errno.h標頭檔案定義了一系列表示不同錯誤**的巨集,這些巨集應擴充套件為型別為 int 的整數。
如,
edom;
//這個巨集表示乙個域錯誤,它在輸入引數超出數學函式定義的域時發生,errno 被設定為 edom
erange;
//這個巨集表示乙個範圍錯誤,它在輸入引數超出數學函式定義的範圍時發生,errno 被設定為 erange。..
.//還有很多的巨集,它們後面都有相應的注釋,表示乙個什麼樣的錯誤
#include
#include
#include
void
test()
//重置為零
errno =0;
}
fopen()開啟乙個不存在的檔案,返回null指標。
系統發生了錯誤,會自動修改errno
的值。
通過strerror(errno)
獲取 錯誤號對應的 字串描述。
程式輸出:開啟檔案發生了錯誤,錯誤說明是:no such file or directory
當使用一些標準庫函式發生了錯誤,如返回 null指標時;系統很有可能會修改errno。這時就可以去獲取errno,或輸出相應的錯誤字串。
C標準庫之三 errno h
errno.h是c標準庫中的乙個檢查錯誤的標頭檔案,以我個人的理解,它的內部一共定義了3個巨集,分別是edom,erange,errno.其中errno相當於乙個全域性變數,它可以被賦值,而c庫中的每個模組都會包含這個errno.h標頭檔案,那麼errno這個可以被賦值的巨集 不知道這樣理解對不對,...
C 標準庫系列之errno h
errno.h 提供了乙個整數全域性變數errno,當系統呼叫或者庫函式的錯誤事件發生時可能會修改該值,指明錯誤的原因,該值可在任何需要的地方被修改 一般情況不為0的值表示出現了異常或者錯誤。errno.h中定義了一系列的錯誤 以e開頭的巨集。glibc中extern int errno來宣告定義該...
C語言段錯誤
當我在linux下寫c語言的時候經常會遇到段錯誤.所以就來細究一下.段錯誤或段違規 segmentation violation 檢視expert c programming peter van der linden pg.156 解釋到段錯誤是由於記憶體管理單元 mmu 的異常所致,而該異常則通常...