Defined in header <errno.h> | ||
---|---|---|
#define errno /*implementation-defined*/ |
errno
is a preprocessor macro (but see note below) that expands to a thread-local (since C11) modifiable lvalue of type int
. 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 <errno.h>
as macro constants beginning 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
.
Library functions perror
and strerror
can be used to obtain textual descriptions of the error conditions that correspond to the current errno
value.
Note: Until C11, the C standards had contradictory requirements, in that they said that errno
is a macro but also that "it is unspecified whether errno
is a macro or an identifier declared with external linkage". C11 fixes this, requiring that it be defined as a macro (see also WG14 N1338).
#include <stdio.h> #include <math.h> #include <errno.h> void show_errno(void) { const char *err_info = "unknown error"; switch (errno) { case EDOM: err_info = "domain error"; break; case EILSEQ: err_info = "illegal sequence"; break; case ERANGE: err_info = "pole or range error"; break; case 0: err_info = "no error"; } fputs(err_info, stdout); puts(" occurred"); } int main(void) { fputs("MATH_ERRNO is ", stdout); puts(math_errhandling & MATH_ERRNO ? "set" : "not set"); errno = 0; 1.0/0.0; show_errno(); errno = 0; acos(+1.1); show_errno(); errno = 0; log(0.0); show_errno(); errno = 0; sin(0.0); show_errno(); }
Possible output:
MATH_ERRNO is set no error occurred domain error occurred pole or range error occurred no error occurred
macros for standard POSIX-compatible error conditions (macro constant) |
|
displays a character string corresponding of the current error to stderr (function) |
|
(C11)(C11) | returns a text version of a given error code (function) |
(C99)(C99)(C99) | defines the error handling mechanism used by the common mathematical functions (macro constant) |
C++ documentation for errno |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/error/errno