errno.h在/usr/include下,定義了存放錯(cuò)誤碼的全局變量errno,及錯(cuò)誤碼EDOM,ERANGE,EILSEQ。它包含了/usr/include/bits下的bits/errno.h頭文件。bits/errno.h不是標(biāo)準(zhǔn)C庫(kù)中的頭文件,在Linux中它為錯(cuò)誤碼提供數(shù)值定義,對(duì)標(biāo)準(zhǔn)C中指定的錯(cuò)誤碼EDOM,ERANGE,EILSEQ定義具體的數(shù)值。
bits/errno.h如下:
標(biāo)準(zhǔn)C的errno.h頭文件如下:
解釋:
(1)C標(biāo)準(zhǔn)規(guī)定了必須定義錯(cuò)誤碼EDOM,EILSEQ,ERANGE,其值可以由系統(tǒng)自行指定,在Linux中它們分別為33、84、34。
(2)EDOM表示參數(shù)不在數(shù)學(xué)函數(shù)能接受的范圍內(nèi);EILSEQ表示非法的字節(jié)順序,在翻譯多字節(jié)字符序列時(shí)遇到的編碼錯(cuò)誤;ERANGE表示數(shù)學(xué)函數(shù)的結(jié)果超出范圍。程序產(chǎn)生相應(yīng)錯(cuò)誤時(shí)全局變量errno會(huì)保存對(duì)應(yīng)的錯(cuò)誤碼。
(3)__BEGIN_DECLS/__END_DECLS宏用來表示數(shù)據(jù)結(jié)構(gòu)及函數(shù)原型聲明的開始和結(jié)束。這類似于MFC中的BEGIN_MESSAGE_MAP/END_MESSAGE_MAP。
還有兩個(gè)錯(cuò)誤處理函數(shù)perror和strerror。perror在stdio.h中定義,用于打印錯(cuò)誤碼及其消息描述;strerror在string.h中定義,用于獲取錯(cuò)誤碼對(duì)應(yīng)的消息描述。這兩個(gè)函數(shù)在解析相應(yīng)頭文件時(shí)再進(jìn)行分析。
新聞熱點(diǎn)
疑難解答
圖片精選