該系列博文主要參考自 cppreference.com 和 cplusplus.com
由於博主水平有限,內容僅供參考
cassert
其中只有一個宏函數assert
#ifdef NDEBUG
#define assert(condition) ((void)0)
#else
#define assert(condition) /*implementation defined*/
#endif
NDEBUG並未在標準庫中定義,如果<cassert>包含的頭文件中定義了宏NDEBUG,assert什麼都不會做。如果沒有,將會比較參數是否和0相等,如果相等,將會輸出標準錯誤輸出的一些診斷信息,並且調用std::abort。診斷信息包括該表達式,標準宏__FILE__和__LINE__的值,還有標準函數__func__。
cerrno
其中有一個宏變量errno,還有許多宏常量
errno:記錄錯誤代碼,其取值可以爲以下的宏(除了ERANGE和EDOM,其餘均爲c++11新添加的)
E2BIG:參數列表太長
EACCES:拒絕訪問
EADDRINUSE:地址在使用中
EADDRNOTAVAIL:地址不可用
EAFNOSUPPORT:Address family not supported (不支持的地址族?)
EAGAIN:資源不可用,再來一次
EALREADY:已在程序中連接
EBADF:無效的文件
EBADMSG:錯誤的信息
EBUSY:設備或資源忙
ECANCELED:已取消操作
ECHILD:沒有子進程
ECONNABORTED:連接失敗
ECONNREFUSED:連接拒絕
ECONNRESET:連接重置
EDEADLK:發生資源死鎖
EDESTADDRREQ:Destination address required
EDOM:參數數值超出範圍
EEXIST:文件存在
EFAULT:錯誤的地址
EFBIG:文件過大
EHOSTUNREACH:主機不可連接
EIDRM:標識符已刪除
EILSEQ:非法的字節序列
EINPROGRESS:操作正在進行
EINTR:函數中斷
EINVAL:非法參數
EIO:I/O錯誤
EISCONN:套接字被連接
EISDIR:是一個目錄
ELOOP:過多層次的符號連接
EMFILE:文件描述符的值過大
EMLINK:連接過多
EMSGSIZE:消息過大
ENAMETOOLONG:文件名過長
ENETDOWN:網絡已關閉
ENETRESET:網絡連接中斷
ENETUNREACH:網絡不可連接
ENFILE:在系統中打開了過多文件
ENOBUFS:沒有緩衝區可用
ENODATA:無消息可用
ENODEV:未找到設備
ENOENT:未找到文件或目錄
ENOEXEC:可執行文件格式錯誤
ENOLCK:沒有可用的鎖
ENOLINK:連接已斷開
ENOMEM:內存不足
ENOMSG:無所需類型的信息
ENOPROTOOPT:協議不可用
ENOSPC:設備上沒有剩餘空間
ENOSR:No STREAM resources
ENOSTR:不是一個STREM
ENOSYS:函數不支持
ENOTCONN:套接字沒有連接
ENOTDIR:不是一個目錄
ENOTEMPTY:目錄非空
ENOTRECOVERABLE:狀態不可恢復
ENOTSOCK:不是一個套接字
ENOTSUP:不支持
ENOTTY:不合適的I/O控制操作
ENXIO:沒有此設備或地址
EOPNOTSUPP:在套接字中不支持該操作
EOVERFLOW:對於此數據類型,值過大
EOWNERDEAD:之前的所有者消亡
EPERM:不允許該操作
EPIPE:管道被損壞
EPROTO:協議錯誤
EPROTONOSUPPORT:協議不支持
EPROTOTYPE:對於套接字,協議類型錯誤
ERANGE:結果過大
EROFS:只讀文件系統
ESPIPE:無效尋找
ESRCH:沒有該進程
ETIME:ioctl()超時
ETIMEDOUT:連接超時
ETXTBSY:文本文件忙
EWOULDBLOCK:操作將被阻止
EXDEV:交叉連接