E*

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Richard Tobin

    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.hheade r.

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

    -- Richard
    --
    :wq
  • Jack Klein

    #2
    Re: E*

    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.hheade r.
    >
    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.l earn.c-c++

    Comment

    • lawrence.jones@siemens.com

      #3
      Re: E*

      Richard Tobin <richard@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.hheade r.
      >
      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

      Comment

      • Eric Sosman

        #4
        Re: E*

        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.hheade r.
        >
        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.hversion s will *not*
        define E12MANY or EiEiO or E_IS_FOR_ELEPHA NT, 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

        Comment

        • Harald van =?UTF-8?b?RMSzaw==?=

          #5
          Re: E*

          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.hheade r.
          >
          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.hversion s will *not* define E12MANY or EiEiO or
          E_IS_FOR_ELEPHA NT, 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>.

          Comment

          • Eric Sosman

            #6
            Re: E*

            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.hheade r.
            > 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.hversion s will *not* define E12MANY or EiEiO or
            >E_IS_FOR_ELEPH ANT, 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

            Comment

            Working...