errno
From cppreference.com
Defined in header
<errno.h>
|
||
#define errno /*implementation-defined*/
|
||
errno
is a preprocessor macro that expands to a thread-local 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
.
[edit] Example
Run this code
#include <stdio.h> #include <errno.h> #include <fcntl.h> #include <unistd.h> #include <stdlib.h> int main (int argc, char **argv) { int fd = -1; fd = open ("/dev/zer0", O_RDONLY); if (fd == -1) { /* perror uses errno */ perror ("Ouuupsss"); exit (EXIT_FAILURE); } close (fd); return EXIT_SUCCESS; }
Output:
Ouuupsss: No such file or directory
[edit] Example
Run this code
#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(); return 0; }
Output:
MATH_ERRNO is set pole or range error occurred domain error occurred pole or range error occurred no error occurred
[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) |
|
(C99)(C99)(C99)
|
defines the error handling mechanism used by the common mathematical functions (macro constant) |