程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> <cerrno>,cerrno

<cerrno>,cerrno

編輯:C++入門知識

<cerrno>,cerrno


文件頭名稱:

  <cerrno>(errno.h)

文件頭描述:

  文件內定義了如下的宏

 errno
最後一個錯誤代碼

 

  

加上其他至少的三個宏常量:EDOMERANGE EILSEQ


宏定義                       所需要的頭文件

errno                           <cerrno> 


這個宏定義可擴展為一個可修改的整型左值(lvalue of type int);所以,它能被程序讀取和修改;errno在程序啟動時被設置為0,並且任何C標准庫中的函數能夠修改成非0的其他值,一般用於標記特定類別的錯誤(一般庫函數一旦設置完後就不會再次修改了)一個程序同樣可以修改這個值,如果這個變量是用於在庫函數調用後的錯誤檢查,那它應該在被調用前被程序預設置(因為任何對庫函數的提前調用都會改變這個值)在聲明了errno 的相同頭文件內至少聲明了如下非0值的宏變量

宏名稱 當errno 值被設置為此值時意味著什麼 EDOM 域(Domain)錯誤:一些數學函數只為某些實際價值( certain real values )而定義,這就稱之為域。舉個例子,求平方根的函數的域為非負數,所以當 sqrt 傳入了一個負數作為參數被調用則 sqrt 函數就會設置errno為EDOM; ERANGE 范圍錯誤:能夠表示一個范圍變量的值是有限的。舉個例子,數學函數中的 pow 可以輕易的被浮點型的數據給計算的超出范圍,或者函數 strtod 會遭遇一串數的位數超出了這個值能夠表達的范圍。在這些情況下,errno會設置為ERANGE; EILSEQ 非法序列:多字節的字符序列可能有有限個有效的序列。當一個多字節的集合被例如 mbrtowc 函數轉換的時,errno會在遇到無效序列時設置為EILSEQ;

這些標准庫中的函數可能設置errno為任何值(並不止上面列出的簡少幾個值),特定的函數可能會在這個頭文件中定義額外的名字;c++ 11擴展中定義的基本值的集合(basic set of values)需要在這個頭文件中被聲明,其中包括許多在POSIX環境中也可使用的名稱,errno值的總數增加到了78個,而且這個數字在不斷增長中。要查看完整的列表,請參閱  errc 。這些特殊的錯誤信息與 errno 值之間的關系可以使用 strerror 函數獲得 或者 直接使用 perror 函數打印輸出;在C++中errno 通常被聲明為一個宏,但是在C中則可能作為一個int對象實現與外部鏈接;

 


這個庫支持多線程,每一個線程都擁有自己區域的errno值,這是一個在C11和C++11的庫兼容方面的需求。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved