错误号_C++中文网

每个定义于 <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

参阅