Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c > #104088
| Path | csiph.com!eternal-september.org!feeder.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail |
|---|---|
| From | Ben Bacarisse <ben.usenet@bsb.me.uk> |
| Newsgroups | comp.lang.c |
| Subject | Re: Standard Headers |
| Date | Fri, 17 Feb 2017 20:49:40 +0000 |
| Organization | A noiseless patient Spider |
| Lines | 60 |
| Message-ID | <87d1egee57.fsf@bsb.me.uk> (permalink) |
| References | <o878ij$840$1@dont-email.me> |
| Mime-Version | 1.0 |
| Content-Type | text/plain |
| Injection-Info | mx02.eternal-september.org; posting-host="733eb1a1b046f141853efc96c771c8f4"; logging-data="24303"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+WiN6Uzfb+4EDJrn/bDL5Ze0dYFRFBM9U=" |
| Cancel-Lock | sha1:hUj1gykNd1a8fdYdpqjhBrORDXY= sha1:e1sQcljwWyMXt5xYL9t8DagTu2w= |
| X-BSB-Auth | 1.99fbc8062ae6376a968d.20170217204940GMT.87d1egee57.fsf@bsb.me.uk |
| Xref | csiph.com comp.lang.c:104088 |
Show key headers only | View raw
BartC <bc@freeuk.com> writes:
> What are the implications (for a normal PC, not embedded devices) of
> having everything in the standard headers already known to a compiler?
That's fine provided that knowledge is switched on at the right time. A
call to (for example) printf must be diagnosed as an error if there is
no declaration in scope but after the magic line #include <stdio.h> the
compiler must behave as if it contains a declaration of that function.
If you go down the route of having the headers simply trigger the right
internal behaviour you must Take care with the actual scope. This:
int main(void)
{
{
#include <stdio.h>
}
printf("");
}
requires a diagnostic.
> That is, as if every source file was prefixed with #includes for the
> 20-odd standard C headers.
This is not fine for, amongst other reasons, the one given above.
> (And apart from the obvious differences, for example a module with a
> missing #include compiles OK here, but won't compile elsewhere.)
But is this odd. That obvious difference is very important. Not only
that, you can declare an int called offsetof provided the macro is not
defined and you can write double printf = 42; in a conforming program.
> There was another question but I can't remember what it was. In that
> case, let's go with this: The C Standard summarises what's expected in
> the standard headers, but typical headers contain all sorts of extra
> junk, even the smaller ones (I think some of them want to
> half-implement the library functions in the headers).
>
> For example ctype.h ought to contain 14 function declarations, but
> actual headers have from 60 to 360 lines.
>
> The question: will a ctype.h with only 14 lines actually work? (It
> appears to.)
You don't need any lines at all provided that simply seeing the #include
magically brings the declarations into the scope being processed. Even
if there really is a file with the 14 declarations in it, you don't even
need include guards provided the implementation keeps track of what's
been seen and what has not.
In the long run, because the compiler must behave as if the headers
contains guarded declarations, it is almost always easier simply to
write them that way.
<snip>
--
Ben.
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Standard Headers BartC <bc@freeuk.com> - 2017-02-17 16:34 +0000
Re: Standard Headers supercat@casperkitty.com - 2017-02-17 08:50 -0800
Re: Standard Headers luser droog <luser.droog@gmail.com> - 2017-02-17 09:08 -0800
Re: Standard Headers Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-02-17 20:31 +0000
Re: Standard Headers GOTHIER Nathan <nathan.gothier@gmail.com> - 2017-02-17 18:09 +0100
Re: Standard Headers "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2017-02-17 09:18 -0800
Re: Standard Headers Keith Thompson <kst-u@mib.org> - 2017-02-17 09:26 -0800
Re: Standard Headers BartC <bc@freeuk.com> - 2017-02-17 17:53 +0000
Re: Standard Headers me <crisdunbar@gmail.com> - 2017-02-17 10:23 -0800
Re: Standard Headers BartC <bc@freeuk.com> - 2017-02-17 18:45 +0000
Re: Standard Headers GOTHIER Nathan <nathan.gothier@gmail.com> - 2017-02-17 19:54 +0100
Re: Standard Headers Keith Thompson <kst-u@mib.org> - 2017-02-17 12:27 -0800
Re: Standard Headers jameskuyper@verizon.net - 2017-02-17 11:38 -0800
Re: Standard Headers Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-02-17 20:49 +0000
Re: Standard Headers supercat@casperkitty.com - 2017-02-17 13:29 -0800
Re: Standard Headers BartC <bc@freeuk.com> - 2017-02-17 22:13 +0000
Re: Standard Headers Nick Bowler <nbowler@draconx.ca> - 2017-02-17 22:28 +0000
Re: Standard Headers Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-02-18 02:48 +0000
Re: Standard Headers supercat@casperkitty.com - 2017-02-18 10:26 -0800
Re: Standard Headers bart4858@gmail.com - 2017-02-18 11:08 -0800
Re: Standard Headers supercat@casperkitty.com - 2017-02-18 11:45 -0800
Re: Standard Headers Tim Rentsch <txr@alumni.caltech.edu> - 2017-02-19 13:45 -0800
Re: Standard Headers BartC <bc@freeuk.com> - 2017-02-19 22:39 +0000
Re: Standard Headers supercat@casperkitty.com - 2017-02-19 16:00 -0800
csiph-web