...
(See undefined behavior 114 in Annex J of the C Standard.)
The errno
identifier expands to a modifiable lvalue that has type int
but is not necessarily the identifier of an object. It might expand to a modifiable lvalue resulting from a function call, such as *errno()
. It is unspecified whether errno
is a macro or an identifier declared with external linkage. If a macro definition is suppressed to access an actual object, or if a program defines an identifier with the name errno
, the behavior is undefined.
...