errno
Defined in header <errno.h>
|
||
---|---|---|
|
errno
is a preprocessor macro 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.
Example
#include <stdio.h>
#include <math.h>
#include <errno.h>
void show_errno(void)
{
if(errno==EDOM) printf("domain error");
if(errno==EILSEQ) printf("illegal sequence");
if(errno==ERANGE) printf("pole or range error");
if(errno==0) printf("no error");
printf(" occurred\n");
}
int main(void)
{
printf("MATH_ERRNO is %s\n", 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();
}
Output:
MATH_ERRNO is set
pole or range error occurred
domain error occurred
pole or range error occurred
no error occurred
References
C11 standard (ISO/IEC 9899:2011):
- 7.5 Errors (p: 205)
- K.3.1.3 Use of errno (p: 584)
- K.3.2 Errors (p: 585)
C99 standard (ISO/IEC 9899:1999):
- 7.5 Errors (p: 186)
C89/C90 standard (ISO/IEC 9899:1990):
- 4.1.3 Errors
See also
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) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
http://en.cppreference.com/w/c/error/errno