# Standard library header <cerrno>

From cppreference.com
< cpp‎ | header

This header was originally in the C standard library as `<errno.h>`.

This header is part of the error handling library.

### Macros

errno | macro which expands to POSIX-compatible thread-local error number variable (macro variable)
E2BIG (C++11) | Argument list too long (macro constant)
EACCES (C++11) | Permission denied (macro constant)
EADDRINUSE (C++11) | Address in use (macro constant)
EADDRNOTAVAIL (C++11) | Address not available (macro constant)
EAFNOSUPPORT (C++11) | Address family not supported (macro constant)
EAGAIN (C++11) | Resource unavailable, try again (macro constant)
EALREADY (C++11) | Connection already in progress (macro constant)
EBADF (C++11) | Bad file descriptor (macro constant)
EBADMSG (C++11) | Bad message (macro constant)
EBUSY (C++11) | Device or resource busy (macro constant)
ECANCELED (C++11) | Operation canceled (macro constant)
ECHILD (C++11) | No child processes (macro constant)
ECONNABORTED (C++11) | Connection aborted (macro constant)
ECONNREFUSED (C++11) | Connection refused (macro constant)
ECONNRESET (C++11) | Connection reset (macro constant)
EDEADLK (C++11) | Resource deadlock would occur (macro constant)
EDESTADDRREQ (C++11) | Destination address required (macro constant)
EDOM | Mathematics argument out of domain of function (macro constant)
EEXIST (C++11) | File exists (macro constant)
EFAULT (C++11) | Bad address (macro constant)
EFBIG (C++11) | File too large (macro constant)
EHOSTUNREACH (C++11) | Host is unreachable (macro constant)
EIDRM (C++11) | Identifier removed (macro constant)
EILSEQ | Illegal byte sequence (macro constant)
EINPROGRESS (C++11) | Operation in progress (macro constant)
EINTR (C++11) | Interrupted function (macro constant)
EINVAL (C++11) | Invalid argument (macro constant)
EIO (C++11) | I/O error (macro constant)
EISCONN (C++11) | Socket is connected (macro constant)
EISDIR (C++11) | Is a directory (macro constant)
ELOOP (C++11) | Too many levels of symbolic links (macro constant)
EMFILE (C++11) | File descriptor value too large (macro constant)
EMLINK (C++11) | Too many links (macro constant)
EMSGSIZE (C++11) | Message too large (macro constant)
ENAMETOOLONG (C++11) | Filename too long (macro constant)
ENETDOWN (C++11) | Network is down (macro constant)
ENETRESET (C++11) | Connection aborted by network (macro constant)
ENETUNREACH (C++11) | Network unreachable (macro constant)
ENFILE (C++11) | Too many files open in system (macro constant)
ENOBUFS (C++11) | No buffer space available (macro constant)
ENODATA (C++11) (deprecated in C++23) | No message is available on the STREAM head read queue (macro constant)
ENODEV (C++11) | No such device (macro constant)
ENOENT (C++11) | No such file or directory (macro constant)
ENOEXEC (C++11) | Executable file format error (macro constant)
ENOLCK (C++11) | No locks available (macro constant)
ENOLINK (C++11) | Link has been severed (macro constant)
ENOMEM (C++11) | Not enough space (macro constant)
ENOMSG (C++11) | No message of the desired type (macro constant)
ENOPROTOOPT (C++11) | Protocol not available (macro constant)
ENOSPC (C++11) | No space left on device (macro constant)
ENOSR (C++11) (deprecated in C++23) | No STREAM resources (macro constant)
ENOSTR (C++11) (deprecated in C++23) | Not a STREAM (macro constant)
ENOSYS (C++11) | Function not supported (macro constant)
ENOTCONN (C++11) | The socket is not connected (macro constant)
ENOTDIR (C++11) | Not a directory (macro constant)
ENOTEMPTY (C++11) | Directory not empty (macro constant)
ENOTRECOVERABLE (C++11) | State not recoverable (macro constant)
ENOTSOCK (C++11) | Not a socket (macro constant)
ENOTSUP (C++11) | Not supported (macro constant)
ENOTTY (C++11) | Inappropriate I/O control operation (macro constant)
ENXIO (C++11) | No such device or address (macro constant)
EOPNOTSUPP (C++11) | Operation not supported on socket (macro constant)
EOVERFLOW (C++11) | Value too large to be stored in data type (macro constant)
EOWNERDEAD (C++11) | Previous owner died (macro constant)
EPERM (C++11) | Operation not permitted (macro constant)
EPIPE (C++11) | Broken pipe (macro constant)
EPROTO (C++11) | Protocol error (macro constant)
EPROTONOSUPPORT (C++11) | Protocol not supported (macro constant)
EPROTOTYPE (C++11) | Protocol wrong type for socket (macro constant)
ERANGE | Result too large (macro constant)
EROFS (C++11) | Read-only file system (macro constant)
ESPIPE (C++11) | Invalid seek (macro constant)
ESRCH (C++11) | No such process (macro constant)
ETIME (C++11) (deprecated in C++23) | Stream `ioctl()` timeout (macro constant)
ETIMEDOUT (C++11) | Connection timed out (macro constant)
ETXTBSY (C++11) | Text file busy (macro constant)
EWOULDBLOCK (C++11) | Operation would block (macro constant)
EXDEV (C++11) | Cross-device link (macro constant)

### Notes

Although the header `<cerrno>` is based on the C standard library header `<errno.h>`, the majority of the macros defined by `<cerrno>` were adopted by C++ from the POSIX standard, rather than the C standard library.

### Synopsis

    #define errno /* see description */
    #define E2BIG /* see description */           // freestanding
    #define EACCES /* see description */          // freestanding
    #define EADDRINUSE /* see description */      // freestanding
    #define EADDRNOTAVAIL /* see description */   // freestanding
    #define EAFNOSUPPORT /* see description */    // freestanding
    #define EAGAIN /* see description */          // freestanding
    #define EALREADY /* see description */        // freestanding
    #define EBADF /* see description */           // freestanding
    #define EBADMSG /* see description */         // freestanding
    #define EBUSY /* see description */           // freestanding
    #define ECANCELED /* see description */       // freestanding
    #define ECHILD /* see description */          // freestanding
    #define ECONNABORTED /* see description */    // freestanding
    #define ECONNREFUSED /* see description */    // freestanding
    #define ECONNRESET /* see description */      // freestanding
    #define EDEADLK /* see description */         // freestanding
    #define EDESTADDRREQ /* see description */    // freestanding
    #define EDOM /* see description */            // freestanding
    #define EEXIST /* see description */          // freestanding
    #define EFAULT /* see description */          // freestanding
    #define EFBIG /* see description */           // freestanding
    #define EHOSTUNREACH /* see description */    // freestanding
    #define EIDRM /* see description */           // freestanding
    #define EILSEQ /* see description */          // freestanding
    #define EINPROGRESS /* see description */     // freestanding
    #define EINTR /* see description */           // freestanding
    #define EINVAL /* see description */          // freestanding
    #define EIO /* see description */             // freestanding
    #define EISCONN /* see description */         // freestanding
    #define EISDIR /* see description */          // freestanding
    #define ELOOP /* see description */           // freestanding
    #define EMFILE /* see description */          // freestanding
    #define EMLINK /* see description */          // freestanding
    #define EMSGSIZE /* see description */        // freestanding
    #define ENAMETOOLONG /* see description */    // freestanding
    #define ENETDOWN /* see description */        // freestanding
    #define ENETRESET /* see description */       // freestanding
    #define ENETUNREACH /* see description */     // freestanding
    #define ENFILE /* see description */          // freestanding
    #define ENOBUFS /* see description */         // freestanding
    #define ENODEV /* see description */          // freestanding
    #define ENOENT /* see description */          // freestanding
    #define ENOEXEC /* see description */         // freestanding
    #define ENOLCK /* see description */          // freestanding
    #define ENOLINK /* see description */         // freestanding
    #define ENOMEM /* see description */          // freestanding
    #define ENOMSG /* see description */          // freestanding
    #define ENOPROTOOPT /* see description */     // freestanding
    #define ENOSPC /* see description */          // freestanding
    #define ENOSYS /* see description */          // freestanding
    #define ENOTCONN /* see description */        // freestanding
    #define ENOTDIR /* see description */         // freestanding
    #define ENOTEMPTY /* see description */       // freestanding
    #define ENOTRECOVERABLE /* see description */ // freestanding
    #define ENOTSOCK /* see description */        // freestanding
    #define ENOTSUP /* see description */         // freestanding
    #define ENOTTY /* see description */          // freestanding
    #define ENXIO /* see description */           // freestanding
    #define EOPNOTSUPP /* see description */      // freestanding
    #define EOVERFLOW /* see description */       // freestanding
    #define EOWNERDEAD /* see description */      // freestanding
    #define EPERM /* see description */           // freestanding
    #define EPIPE /* see description */           // freestanding
    #define EPROTO /* see description */          // freestanding
    #define EPROTONOSUPPORT /* see description */ // freestanding
    #define EPROTOTYPE /* see description */      // freestanding
    #define ERANGE /* see description */          // freestanding
    #define EROFS /* see description */           // freestanding
    #define ESPIPE /* see description */          // freestanding
    #define ESRCH /* see description */           // freestanding
    #define ETIMEDOUT /* see description */       // freestanding
    #define ETXTBSY /* see description */         // freestanding
    #define EWOULDBLOCK /* see description */     // freestanding
    #define EXDEV /* see description */           // freestanding

### Defect reports

The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

DR | Applied to | Behavior as published | Correct behavior
--- | --- | --- | ---
LWG 288 | C++98 | the macro `EILSEQ` was not defined in `<cerrno>` | defined

### See also

- Description for the error number values

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/header/cerrno&oldid=158957"