|
|
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.h> header.
May an implementation define an error macro EOF with a value different
from the EOF in <stdio.h>?
-- Richard
--
:wq
|
|
0
|
|
|
|
Reply
|
richard91 (3683)
|
5/10/2008 9:12:28 PM |
|
Richard Tobin <richard@cogsci.ed.ac.uk> 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.h> header.
>
> 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
|
|
0
|
|
|
|
Reply
|
lawrence.jones2 (565)
|
5/11/2008 3:06:52 AM
|
|
On 10 May 2008 21:12:28 GMT, richard@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.h> header.
>
> 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.h> and <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
|
|
0
|
|
|
|
Reply
|
jackklein (3932)
|
5/11/2008 4:01:35 AM
|
|
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.h> header.
>
> 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.h> does 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.h> might define it. And
second, it implies that future <errno.h> versions 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
esosman@ieee-dot-org.invalid
|
|
0
|
|
|
|
Reply
|
esosman2 (2945)
|
5/11/2008 1:01:36 PM
|
|
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.h> header.
>
> 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.h> might define it. And second, it implies that
> future <errno.h> versions 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>.
|
|
0
|
|
|
|
Reply
|
truedfx (1926)
|
5/11/2008 1:10:09 PM
|
|
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.h> header.
>> 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.h> might define it. And second, it implies that
>> future <errno.h> versions 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
esosman@ieee-dot-org.invalid
|
|
0
|
|
|
|
Reply
|
esosman2 (2945)
|
5/11/2008 1:49:09 PM
|
|
|
5 Replies
43 Views
(page loaded in 0.19 seconds)
|
|
|
|
|
|
|
|
|