470,870 Members | 1,409 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 470,870 developers. It's quick & easy.

E*

7.26.3 Errors <errno.h>
Macros that begin with E and a digit or E and an uppercase letter
may be added to the declarations in the <errno.hheader.

May an implementation define an error macro EOF with a value different
from the EOF in <stdio.h>?

-- Richard
--
:wq
Jun 27 '08 #1
5 1043
On 10 May 2008 21:12:28 GMT, ri*****@cogsci.ed.ac.uk (Richard Tobin)
wrote in comp.lang.c:
7.26.3 Errors <errno.h>
Macros that begin with E and a digit or E and an uppercase letter
may be added to the declarations in the <errno.hheader.

May an implementation define an error macro EOF with a value different
from the EOF in <stdio.h>?
Perhaps in a non-standard extra include file, or guarded by some
conditional compilation guard in <errno.h>.

It could not unconditionally include such a definition in <errno.h>
when the compiler is invoked in conforming mode because it would break
conforming programs that included both <stdio.hand <errno.h>.

--
Jack Klein
Home: http://JK-Technology.Com
FAQs for
comp.lang.c http://c-faq.com/
comp.lang.c++ http://www.parashift.com/c++-faq-lite/
alt.comp.lang.learn.c-c++
http://www.club.cc.cmu.edu/~ajo/docs/FAQ-acllc.html
Jun 27 '08 #2
Richard Tobin <ri*****@cogsci.ed.ac.ukwrote:
7.26.3 Errors <errno.h>
Macros that begin with E and a digit or E and an uppercase letter
may be added to the declarations in the <errno.hheader.

May an implementation define an error macro EOF with a value different
from the EOF in <stdio.h>?
No. A strictly conforming program is allowed to include both headers
and the conflicting definitions of EOF would violate the constraint in
6.10.3p2. Since a conforming implementation is not allowed to have
entensions that invalidate strictly conforming programs, such a
definition is not allowed.

Conformance questions like this really belong in comp.std.c where
there's less traffic, much less heat, and far more light than there is
here.

-- Larry Jones

I think we need to change the rules. -- Calvin
Jun 27 '08 #3
Richard Tobin wrote:
7.26.3 Errors <errno.h>
Macros that begin with E and a digit or E and an uppercase letter
may be added to the declarations in the <errno.hheader.

May an implementation define an error macro EOF with a value different
from the EOF in <stdio.h>?
No, because a conforming program can include both <stdio.h>
and <errno.h>. Note that the freedom to add more EXXX macros
in <errno.hdoes not imply that every EXXX macro everywhere
must be an error number.

The paragraph can be read as a warning and as an implied
promise. First, it warns you not to use EEYORE for your own
purposes, because a future <errno.hmight define it. And
second, it implies that future <errno.hversions will *not*
define E12MANY or EiEiO or E_IS_FOR_ELEPHANT, so you can use
those identifiers as you wish. However, implications are not
actual promises: Witness C99's encroachment on names reserved
to the programmer in C90.

--
Eric Sosman
es*****@ieee-dot-org.invalid
Jun 27 '08 #4
On Sun, 11 May 2008 09:01:36 -0400, Eric Sosman wrote:
Richard Tobin wrote:
> 7.26.3 Errors <errno.h>
Macros that begin with E and a digit or E and an uppercase letter
may be added to the declarations in the <errno.hheader.

The paragraph can be read as a warning and as an implied
promise. First, it warns you not to use EEYORE for your own purposes,
because a future <errno.hmight define it. And second, it implies that
future <errno.hversions will *not* define E12MANY or EiEiO or
E_IS_FOR_ELEPHANT, so you can use those identifiers as you wish.
Why can't E12MANY be defined? It's a macro that begins with E and a digit,
which is allowed, right? I'm asking because E2BIG is a fairly common real-
world macro provided by <errno.h>.
Jun 27 '08 #5
Harald van Dijk wrote:
On Sun, 11 May 2008 09:01:36 -0400, Eric Sosman wrote:
>Richard Tobin wrote:
>> 7.26.3 Errors <errno.h>
Macros that begin with E and a digit or E and an uppercase letter
may be added to the declarations in the <errno.hheader.
The paragraph can be read as a warning and as an implied
promise. First, it warns you not to use EEYORE for your own purposes,
because a future <errno.hmight define it. And second, it implies that
future <errno.hversions will *not* define E12MANY or EiEiO or
E_IS_FOR_ELEPHANT, so you can use those identifiers as you wish.

Why can't E12MANY be defined? It's a macro that begins with E and a digit,
which is allowed, right? I'm asking because E2BIG is a fairly common real-
world macro provided by <errno.h>.
Oops! My blunder; sorry.

--
Eric Sosman
es*****@ieee-dot-org.invalid
Jun 27 '08 #6

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

3 posts views Thread by William C. White | last post: by
2 posts views Thread by Albert Ahtenberg | last post: by
3 posts views Thread by James | last post: by
reply views Thread by Ollivier Robert | last post: by
1 post views Thread by Richard Galli | last post: by
4 posts views Thread by Albert Ahtenberg | last post: by
1 post views Thread by inderjit S Gabrie | last post: by
2 posts views Thread by Jack | last post: by
3 posts views Thread by Sandwick | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.