"E. Robert Tisdale" <E.Robert.Tisdale@jpl.nasa.gov> writes:
The problem is that /usr/include/bits/errno.h declares:
extern int *__errno_location (void) __THROW __attribute__ ((__const__));
but defines the C preprocessor macro:
# define errno (*__errno_location ())
The declaration and the macro definition are inconsistent.
I don't see it.
__errno_location() evaluates to an int *, so (*__errno_location ())
evaluates to an lvalue of type int. Makes sense to me.
Is there a problem with the "__THROW __attribute__ ((__const__));" part
(which I don't understand)?