错误号

< cpp‎ | error
 
 
工具库
通用工具
日期和时间
函数对象
格式化库 (C++20)
(C++11)
关系运算符 (C++20 中弃用)
整数比较函数
(C++20)
swap 与类型运算
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
常用词汇类型
(C++11)
(C++17)
(C++17)
(C++17)
(C++17)

初等字符串转换
(C++17)
(C++17)
 
 

每个定义于 <cerrno> 的宏展开成 int 类型的整数常量表达式,每个都拥有正值,匹配 POSIX 错误码中的大多数。下列常量得到定义(实现可以定义更多,只要它们以 'E' 开始,后随数字或大写字母)

定义于头文件 <cerrno>
E2BIG
(C++11)
参数列表过长
(宏常量)
EACCES
(C++11)
权限被禁止
(宏常量)
EADDRINUSE
(C++11)
地址在使用中
(宏常量)
EADDRNOTAVAIL
(C++11)
地址不可用
(宏常量)
EAFNOSUPPORT
(C++11)
不支持地址系列
(宏常量)
EAGAIN
(C++11)
资源不可用,须重试
(宏常量)
EALREADY
(C++11)
连接已在进行
(宏常量)
EBADF
(C++11)
坏的的文件描述符
(宏常量)
EBADMSG
(C++11)
坏的消息
(宏常量)
EBUSY
(C++11)
设备或资源忙
(宏常量)
ECANCELED
(C++11)
操作取消
(宏常量)
ECHILD
(C++11)
无子进程
(宏常量)
ECONNABORTED
(C++11)
连接被打断
(宏常量)
ECONNREFUSED
(C++11)
连接被拒绝
(宏常量)
ECONNRESET
(C++11)
连接被重置
(宏常量)
EDEADLK
(C++11)
资源死锁会发生
(宏常量)
EDESTADDRREQ
(C++11)
要求目标地址
(宏常量)
EDOM
数学参数在函数定义域外
(宏常量)
EEXIST
(C++11)
文件已存在
(宏常量)
EFAULT
(C++11)
坏的地址
(宏常量)
EFBIG
(C++11)
文件过大
(宏常量)
EHOSTUNREACH
(C++11)
主机不可抵达
(宏常量)
EIDRM
(C++11)
标识符被移除
(宏常量)
EILSEQ
(C++11)
非法字节序列
(宏常量)
EINPROGRESS
(C++11)
操作已在进行
(宏常量)
EINTR
(C++11)
函数被中断
(宏常量)
EINVAL
(C++11)
非法参数
(宏常量)
EIO
(C++11)
I/O 错误
(宏常量)
EISCONN
(C++11)
接头已连接
(宏常量)
EISDIR
(C++11)
是目录
(宏常量)
ELOOP
(C++11)
符号链接级别过多
(宏常量)
EMFILE
(C++11)
文件描述符值过大
(宏常量)
EMLINK
(C++11)
链接过多
(宏常量)
EMSGSIZE
(C++11)
消息过大
(宏常量)
ENAMETOOLONG
(C++11)
文件名过长
(宏常量)
ENETDOWN
(C++11)
网络不工作
(宏常量)
ENETRESET
(C++11)
连接被网络打断
(宏常量)
ENETUNREACH
(C++11)
网络不可抵达
(宏常量)
ENFILE
(C++11)
系统中打开文件过多
(宏常量)
ENOBUFS
(C++11)
无缓冲空间可用
(宏常量)
ENODATA
(C++11)
流头已读取队列中无消息
(宏常量)
ENODEV
(C++11)
无此设备
(宏常量)
ENOENT
(C++11)
无此文件或目录
(宏常量)
ENOEXEC
(C++11)
可执行文件格式错误
(宏常量)
ENOLCK
(C++11)
无可用锁
(宏常量)
ENOLINK
(C++11)
链接已切断
(宏常量)
ENOMEM
(C++11)
空间不足
(宏常量)
ENOMSG
(C++11)
无所需类型消息
(宏常量)
ENOPROTOOPT
(C++11)
协议不可用
(宏常量)
ENOSPC
(C++11)
设备无剩余空间
(宏常量)
ENOSR
(C++11)
无流资源
(宏常量)
ENOSTR
(C++11)
非流
(宏常量)
ENOSYS
(C++11)
不支持的函数
(宏常量)
ENOTCONN
(C++11)
未连接的接头
(宏常量)
ENOTDIR
(C++11)
非目录
(宏常量)
ENOTEMPTY
(C++11)
目录非空
(宏常量)
ENOTRECOVERABLE
(C++11)
状态不可恢复
(宏常量)
ENOTSOCK
(C++11)
非接头
(宏常量)
ENOTSUP
(C++11)
不支持
(宏常量)
ENOTTY
(C++11)
不适合的 I/O 控制操作
(宏常量)
ENXIO
(C++11)
无此设备或地址
(宏常量)
EOPNOTSUPP
(C++11)
接头上不支持的操作
(宏常量)
EOVERFLOW
(C++11)
值过大而无法存入数据类型
(宏常量)
EOWNERDEAD
(C++11)
先前拥有者已死
(宏常量)
EPERM
(C++11)
操作不允许
(宏常量)
EPIPE
(C++11)
管道损坏
(宏常量)
EPROTO
(C++11)
协议错误
(宏常量)
EPROTONOSUPPORT
(C++11)
不支持的协议
(宏常量)
EPROTOTYPE
(C++11)
接头类型错误的协议
(宏常量)
ERANGE
结果过大
(宏常量)
EROFS
(C++11)
只读文件系统
(宏常量)
ESPIPE
(C++11)
非法寻位
(宏常量)
ESRCH
(C++11)
无此进程
(宏常量)
ETIME
(C++11)
流 ioctl() 超时
(宏常量)
ETIMEDOUT
(C++11)
连接超时
(宏常量)
ETXTBSY
(C++11)
文本文件忙
(宏常量)
EWOULDBLOCK
(C++11)
操作会阻塞
(宏常量)
EXDEV
(C++11)
跨设备链接
(宏常量)

要求所有值为唯一,除了 EOPNOTSUPPENOTSUP 的值可以相同,及 EAGAINEWOULDBLOCK 的值可以相同

示例

#include <iostream>
#include <cmath>
#include <cerrno>
#include <cstring>
#include <clocale>
 
int main()
{
    double not_a_number = std::log(-1.0);
    if (errno == EDOM) {
        std::cout << "log(-1) failed: " << std::strerror(errno) << '\n';
        std::setlocale(LC_MESSAGES, "de_DE.utf8");
        std::cout << "Or, in German, " << std::strerror(errno) << '\n';
    }
}

可能的输出:

log(-1) failed: Numerical argument out of domain
Or, in German, Das numerische Argument ist ausserhalb des Definitionsbereiches

参阅

(C++11)
列出所有标准 <cerrno> 宏常量的 std::error_condition 枚举
(类)
展开成 POSIX 兼容的线程局域错误号变量的宏
(宏变量)
显示对应当前错误的字符串于 stderr
(函数)
返回给定错误码的文本版本
(函数)