Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| From | Keith Thompson <kst-u@mib.org> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: Random thought -- EOF and errno |
| Date | 2011-08-13 17:57 -0700 |
| Organization | None to speak of |
| Message-ID | <lnr54o4xow.fsf@nuthaus.mib.org> (permalink) |
| References | (4 earlier) <0.06274cbd79e04c20808d.20110813012700BST.87ei0qjgvf.fsf@bsb.me.uk> <lnpqka5cc1.fsf@nuthaus.mib.org> <0.83adf5802e654f78a515.20110813143800BST.87d3g9ig93.fsf@bsb.me.uk> <lnzkjd403q.fsf@nuthaus.mib.org> <0.18b601c8ccdd1dc689e0.20110813225325BST.874o1lgeqy.fsf@bsb.me.uk> |
Ben Bacarisse <ben.usenet@bsb.me.uk> writes:
> Keith Thompson <kst-u@mib.org> writes:
>> Ben Bacarisse <ben.usenet@bsb.me.uk> writes:
>>> Keith Thompson <kst-u@mib.org> writes:
[...]
>>>> Hypothetically,
>>>> <errno.h> has:
>>>> #define EOF 42 /* Error on Ocelot Farm */
>>>> and <stdio.h> has:
>>>> #define EOF (-1)
>>>>
>>>> Then the preprocessed expansion of the above source file has:
>>>> ...
>>>> #define EOF 42
>>>> ...
>>>> #define EOF (-1)
>>>> ...
>>>> which violates C99 6.10.3p2.
>>>
>>> Right, that's what I thought. But merely defining EOF as positive in
>>> errno.h is not what makes the implementation fail on this source -- it
>>> is defining EOF in stdio.h without un-defining it first. Since EOF in
>>> errno.h is an extension, there's no way to know if it's really important
>>> or not, so you can't assume that it can't be redefined.
>>
>> <stdio.h> isn't required to undefine EOF before redefining it. The
>> identifier EOF is reserved, so if a user program does this:
>>
>> #define EOF 42
>> #include <stdio.h>
>>
>> then that program's behavior is at best undefined.
>
> Agreed, but I think we are talking at cross purposes. I thought you
> were saying that this daft implementation *must* fail to compile the
> program you quoted. I was just saying that it might not. I don't think
> there is any disagreement about the facts, but I may well have
> misconstrued what you wrote.
The only program an implementation *must* fail to compile is one with a
#error directive.
The above 2-line program will trigger a diagnostic if <stdio.h> doesn't
undefine EOF before defining it. There's no rule that says it should
undefine it or that it shouldn't. (It's probably better QoI-wise if it
doesn't, so that bad code like the above *will* trigger a diagnostic.)
[...]
>> I think you're assuming that this program:
>>
>> #include <errno.h>
>> #include <stdio.h>
>> int main(void){}
>>
>> is strictly conforming. Of course it *should* be, but I'm arguing that
>> the reservation of the identifier EOF by both <stdio.h> and <errno.h>
>> creates an unintentional loophole, implying that it isn't. It depends
>> on the implementation-defined choice of whether <errno.h> defines EOF.
>
> How, then, is it strictly conforming? I though that SCP must not depend
> on anything implementation-defined.
It's not; that was my point. I inferred (perhaps wrongly) that you were
assuming that it is. On the other hand, I now think it is; see my
response to Eric Sosman (as soon as I write it).
[...]
--
Keith Thompson (The_Other_Keith) kst-u@mib.org <http://www.ghoti.net/~kst>
Nokia
"We must do something. This is something. Therefore, we must do this."
-- Antony Jay and Jonathan Lynn, "Yes Minister"
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Random thought -- EOF and errno Kenneth Brody <kenbrody@spamcop.net> - 2011-08-12 12:04 -0400
Re: Random thought -- EOF and errno James Kuyper <jameskuyper@verizon.net> - 2011-08-12 12:27 -0400
Re: Random thought -- EOF and errno Ben Bacarisse <ben.usenet@bsb.me.uk> - 2011-08-13 00:12 +0100
Re: Random thought -- EOF and errno Keith Thompson <kst-u@mib.org> - 2011-08-12 16:30 -0700
Re: Random thought -- EOF and errno Ben Bacarisse <ben.usenet@bsb.me.uk> - 2011-08-13 01:27 +0100
Re: Random thought -- EOF and errno Keith Thompson <kst-u@mib.org> - 2011-08-12 18:28 -0700
Re: Random thought -- EOF and errno Ben Bacarisse <ben.usenet@bsb.me.uk> - 2011-08-13 14:38 +0100
Re: Random thought -- EOF and errno Keith Thompson <kst-u@mib.org> - 2011-08-13 11:50 -0700
Re: Random thought -- EOF and errno Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-08-13 17:45 -0400
Re: Random thought -- EOF and errno Keith Thompson <kst-u@mib.org> - 2011-08-13 18:04 -0700
Re: Random thought -- EOF and errno Ben Bacarisse <ben.usenet@bsb.me.uk> - 2011-08-13 22:53 +0100
Re: Random thought -- EOF and errno Keith Thompson <kst-u@mib.org> - 2011-08-13 17:57 -0700
Re: Random thought -- EOF and errno Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-08-13 21:06 -0400
Re: Random thought -- EOF and errno Keith Thompson <kst-u@mib.org> - 2011-08-13 18:39 -0700
Re: Random thought -- EOF and errno Tim Rentsch <txr@alumni.caltech.edu> - 2011-09-04 12:59 -0700
Re: Random thought -- EOF and errno James Kuyper <jameskuyper@verizon.net> - 2011-08-12 20:51 -0400
Re: Random thought -- EOF and errno Nobody <nobody@nowhere.com> - 2011-08-13 05:55 +0100
Re: Random thought -- EOF and errno Ben Bacarisse <ben.usenet@bsb.me.uk> - 2011-08-13 14:49 +0100
Re: Random thought -- EOF and errno Kenneth Brody <kenbrody@spamcop.net> - 2011-08-15 15:02 -0400
Re: Random thought -- EOF and errno Keith Thompson <kst-u@mib.org> - 2011-08-15 12:18 -0700
Re: Random thought -- EOF and errno James Kuyper <jameskuyper@verizon.net> - 2011-08-15 21:54 -0400
Re: Random thought -- EOF and errno Ben Bacarisse <ben.usenet@bsb.me.uk> - 2011-08-16 04:21 +0100
Re: Random thought -- EOF and errno William Ahern <william@wilbur.25thandClement.com> - 2011-08-15 12:56 -0700
Re: Random thought -- EOF and errno Seebs <usenet-nospam@seebs.net> - 2011-08-12 18:37 +0000
Re: Random thought -- EOF and errno Nobody <nobody@nowhere.com> - 2011-08-13 06:00 +0100
Re: Random thought -- EOF and errno Kenneth Brody <kenbrody@spamcop.net> - 2011-08-15 15:05 -0400
Re: Random thought -- EOF and errno Keith Thompson <kst-u@mib.org> - 2011-08-15 12:14 -0700
Re: Random thought -- EOF and errno gordonb.gl0ml@burditt.org (Gordon Burditt) - 2011-08-16 04:31 -0500
csiph-web