errno
in C?
You may see references to errno
in C code. This is defined in <errno.h>
as:
#define errno (*__error())
That is, errno
dereferences a call to a function __error
. This is defined as
extern int * __error(void);
That is, a function which takes no arguments and returns a non-null pointer to the error number.
The docs say
errno
is defined by the ISO C standard to be a modifiable lvalue of typeint
That is, we should be able to assign to errno
. This is possible, because *V
is also an lvalue.
These details aside, errno
is basically a global int
value. Its value is set by some system calls. It’s an assistant to the “return -1
” idiom.
I wrote this because I felt like it. This post is my own, and not associated with my employer.
Jim. Public speaking. Friends. Vidrio.