errno

From cppreference.com
< cpp‎ | error
 
 
 
Error handling
Exception handling
(C++11)
Exception handling failures
(C++11)
(deprecated)
(deprecated)
(C++11)(deprecated)
(deprecated)
Exception categories
Error codes
Error codes
errno
Assertions
system_error facility
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
 
Defined in header <cerrno>
#define errno /*implementation-defined*/

errno is a preprocessor macro used for error indication.

It expands to a static modifiable lvalue of type int. (until C++11)
It expands to a thread-local modifiable lvalue of type int. (since C++11)

Several standard library functions indicate errors by writing positive integers to errno. Typically, the value of errno is set to one of the error codes, listed in <cerrno> as macro constants that begin with the letter E, followed by uppercase letters or digits.

The value of errno is 0 at program startup, and although library functions are allowed to write positive integers to errno whether or not an error occurred, library functions never store 0 in errno.

[edit] Example

#include <iostream>
#include <cmath>
#include <cerrno>
#include <cstring>
 
int main()
{
    double not_a_number = std::log(-1.0);
    if (errno == EDOM) {
        std::cout << "log(-1) failed: " << std::strerror(errno) << '\n';
    }
}

Output:

log(-1) failed: Numerical argument out of domain

[edit] See also

macros for standard POSIX-compatible error conditions
(macro constant)
displays a character string corresponding of the current error to stderr
(function)
returns a text version of a given error code
(function)