Mail Archives: cygwin/1999/01/21/07:46:49
> From: DJ Delorie <dj AT delorie DOT com>
> To: gnu-win32 AT cygnus DOT com
> Subject: Re: setting errno
> Date: den 20 januari 1999 01:01
>
> Tim Taylor wrote:
> >
> > I'm porting a program that sets errno if an operation fails. However,
in
> > the B20.1 errno is a macro that dereferences the pointer returned by a
> > function #define errno (*__errno())
> >
> > What is the proper way to set errno in cygwin?
>
> The correct way is, always was, and always will be, like thus:
>
> #include <errno.h>
>
> errno = N;
>
> The ANSI spec requires it to be so.
More specifically, the ANSI spec requires that errno be an lvalue,
precisely to allow it to expand to a function returning a dereferenced
pointer. And quite a lot of compilers (or rather, header files) define it
that way.
Unfortunately, it is not often clearly stated that this is the case (not
every C programmer reads the ANSI standard that carefully), leading to
serious confusion when someone tries to handle errno as if it was a
variable.
-------------------------------------------------
Jesper Eskilson
mailto:jojo AT sics DOT se
http://www.sics.se/~jojo
-
For help on using this list (especially unsubscribing), send a message to
"gnu-win32-request AT cygnus DOT com" with one line of text: "help".
- Raw text -