Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #103142

Re: linking precedence rules

From Manfred <noname@invalid.add>
Newsgroups comp.lang.c
Subject Re: linking precedence rules
Date 2017-02-04 17:12 +0100
Organization Aioe.org NNTP Server
Message-ID <o74ugl$lf3$1@gioia.aioe.org> (permalink)
References (2 earlier) <edef9tF8tn5U1@mid.individual.net> <s8j57c9s06a8iodjk2oovsn409gadcr1ev@4ax.com> <edpa7vFt8c3U1@mid.individual.net> <o57sa7$r5t$1@dont-email.me> <kfnlgucn34k.fsf@x-alumni2.alumni.caltech.edu>

Show all headers | View raw


On 1/15/2017 9:23 AM, Tim Rentsch wrote:
>> * The Standard /does/ have something to say about a program
>> supplying a header with the same name as a standard header:  "If a
>> file with the same name as one of the above < and > delimited
>> sequences, not provided as part of the implementation, is placed
>> in any of the standard places that are searched for included
>> source files, the behavior is undefined."  (So don't do that.)
>
> Here there is a subtlety that deserves amplification.  There are
> two different kinds of #include lines, those with <>'s and those
> with ""'s.  The first of these is covered by the passage given
> above.  For the "" kind of #include line, that causes the line to
> be replaced by a source file, where the file in question (per
> 6.10.2 p3)
>
>     is searched for in an implementation-defined manner.
>
> Now here is an interesting question: is the quoted excerpt above
> (ie, 7.1.2 p3) meant to apply only to the places of 6.10.2 p2, or
> is it also meant to apply to "places" (quoted because 6.10.2 p3
> doesn't use the term) of 6.10.2 p3?  The use of 'standard places'
> supports the view that it applies only to the 6.10.2 p2 places.
> The use of 'included source files' supports the view that it also
> applies to "places" where 6.10.2 p3 would find source files (note
> though that a header, even a standard header, may be a source
> file, even if it is not necessarily one).
>
> I don't think either of the two positions above is absolutely
> convincing.  I lean towards the view that only the places of
> 6.10.2 p2 are the ones that matter, because I think it makes more
> sense:  after all, a #include <stdio.h> isn't going to go looking
> in the 6.10.2 p3 "places" anyway, so there is no confusion if one
> of those places has a file named stdio.h.  Furthermore it is
> potentially useful to be able to supply a file that augments the
> regular <stdio.h> header in some way, so #include "stdio.h" would
> get that augmentation if it were there, or fall back to <stdio.h>
> if it were not.  All upside, no downside - does anyone have a
> different opinion on that assessment?
>
The way I read it, it is clear to me that the quoted excerpt (i.e. 7.1.2 
p3) only applies to #include directives as per  6.10.2 p2 (i.e. using <>).

An this makes perfectly sense (to me) if considering the rationale of 
6.10.2 p2 and 6.10.2 p3:

- when using <> inclusions the programmer explicitly wants to include 
one of the standard headers provided by the implementation (if it is not 
one of the standard headers, the syntax is meant to be used to #include 
some third-party header as provided by the supplier). In other words, 
the <> syntax is used to #include files as provided by the (supposedly 
trusted) suppliers. Obviously if one of the standard headers (say 
stdio.h) gets replaced with respect to the one provided by the 
implementation, the standard cannot guarantee the behaviour of the 
implementation.

- when using "" inclusions the programmer explicitly wants to the search 
to be extended first to other locations than the standard ones. i.e. the 
programmer is expected to know what he/she is doing, and in this respect 
the standard does not prevent #include "stdio.h" from including 
something else than the standard header (obviously if this happens you 
can't expect the implementation to behave as if #include <stdio.h> was 
written, so you are on your own).
On the other hand, I assume (I didn't check, but I am pretty sure) that 
the standard library uses the <> syntax to include headers, so if you 
write #include "stdio.h" and have stdio.h thus replaced, you may alter 
the behaviour of your own code, not of the library.

Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

linking precedence rules Michael Holiday <Mike@example.invalid> - 2017-01-07 23:49 -0800
  Re: linking precedence rules Ian Collins <ian-news@hotmail.com> - 2017-01-08 21:20 +1300
    Re: linking precedence rules Michael Holiday <Mike@example.invalid> - 2017-01-08 01:32 -0800
      Re: linking precedence rules "James R. Kuyper" <jameskuyper@verizon.net> - 2017-01-08 11:08 -0500
        Re: linking precedence rules Michael Holiday <Mike@example.invalid> - 2017-01-12 03:25 -0800
          Re: linking precedence rules Noob <root@127.0.0.1> - 2017-01-12 13:31 +0100
            OT Re: linking precedence rules Michael Holiday <Mike@example.invalid> - 2017-01-14 01:18 -0800
      Re: linking precedence rules Barry Schwarz <schwarzb@dqel.com> - 2017-01-08 15:38 -0800
        Re: linking precedence rules "James R. Kuyper" <jameskuyper@verizon.net> - 2017-01-08 18:46 -0500
        Re: linking precedence rules Michael Holiday <Mike@example.invalid> - 2017-01-12 04:13 -0800
          Re: linking precedence rules Richard Heathfield <rjh@cpax.org.uk> - 2017-01-12 12:21 +0000
            Re: linking precedence rules Tim Rentsch <txr@alumni.caltech.edu> - 2017-01-15 00:23 -0800
              Re: linking precedence rules Michael Holiday <Mike@example.invalid> - 2017-01-16 06:20 -0800
                Re: linking precedence rules Tim Rentsch <txr@alumni.caltech.edu> - 2017-01-30 05:10 -0800
              Re: linking precedence rules Manfred <noname@invalid.add> - 2017-02-04 17:12 +0100
                Re: linking precedence rules Tim Rentsch <txr@alumni.caltech.edu> - 2017-02-08 20:47 -0800
          Re: linking precedence rules Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-01-12 13:31 +0000
            Re: linking precedence rules Michael Holiday <Mike@example.invalid> - 2017-01-13 01:58 -0800
              Re: linking precedence rules Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-01-13 10:41 +0000
                Re: linking precedence rules Michael Holiday <Mike@example.invalid> - 2017-01-14 03:49 -0800
                Re: linking precedence rules BartC <bc@freeuk.com> - 2017-01-14 12:03 +0000
                Re: linking precedence rules David Brown <david.brown@hesbynett.no> - 2017-01-14 14:02 +0100
                Re: linking precedence rules BartC <bc@freeuk.com> - 2017-01-14 13:46 +0000
                Re: linking precedence rules gazelle@shell.xmission.com (Kenny McCormack) - 2017-01-14 14:23 +0000
                Re: linking precedence rules Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-01-14 14:31 +0000
                Re: linking precedence rules BartC <bc@freeuk.com> - 2017-01-14 16:18 +0000
                Re: linking precedence rules David Brown <david.brown@hesbynett.no> - 2017-01-14 17:49 +0100
                Re: linking precedence rules BartC <bc@freeuk.com> - 2017-01-14 17:21 +0000
                Re: linking precedence rules Ian Collins <ian-news@hotmail.com> - 2017-01-15 10:12 +1300
                Re: linking precedence rules BartC <bc@freeuk.com> - 2017-01-14 21:59 +0000
                Re: linking precedence rules supercat@casperkitty.com - 2017-01-14 14:12 -0800
                Re: linking precedence rules Ian Collins <ian-news@hotmail.com> - 2017-01-15 11:39 +1300
                Re: linking precedence rules Malcolm McLean <malcolm.mclean5@btinternet.com> - 2017-01-14 16:03 -0800
                Re: linking precedence rules raltbos@xs4all.nl (Richard Bos) - 2017-01-18 11:51 +0000
                Re: linking precedence rules Michael Holiday <Mike@example.invalid> - 2017-01-15 02:04 -0800
                Re: linking precedence rules David Brown <david.brown@hesbynett.no> - 2017-01-14 23:48 +0100
                Re: linking precedence rules Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-01-14 20:28 +0000
                The Unix way vs. the Windows way (Was: linking precedence rules) gazelle@shell.xmission.com (Kenny McCormack) - 2017-01-14 14:14 +0000
                Re: The Unix way vs. the Windows way (Was: linking precedence rules) BartC <bc@freeuk.com> - 2017-01-14 14:29 +0000
                Re: The Unix way vs. the Windows way (Was: linking precedence rules) supercat@casperkitty.com - 2017-01-14 14:20 -0800
                Re: linking precedence rules Michael Holiday <Mike@example.invalid> - 2017-01-15 01:40 -0800
                Re: linking precedence rules BartC <bc@freeuk.com> - 2017-01-15 11:43 +0000
                Re: linking precedence rules antispam@math.uni.wroc.pl - 2017-01-18 19:55 +0000
                Re: linking precedence rules Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-01-14 14:22 +0000
              Re: comparison logic Noob <root@127.0.0.1> - 2017-01-13 16:05 +0100
                Re: comparison logic Richard Heathfield <rjh@cpax.org.uk> - 2017-01-13 15:37 +0000
                Re: comparison logic Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-01-13 16:06 +0000
                Re: comparison logic Noob <root@127.0.0.1> - 2017-01-13 19:37 +0100
                Re: comparison logic BartC <bc@freeuk.com> - 2017-01-13 18:42 +0000
                Re: comparison logic Richard Heathfield <rjh@cpax.org.uk> - 2017-01-13 18:49 +0000
                Re: comparison logic Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-01-13 20:50 +0000
                Re: comparison logic Tim Rentsch <txr@alumni.caltech.edu> - 2017-01-14 01:05 -0800
                Re: comparison logic Michael Holiday <Mike@example.invalid> - 2017-01-14 01:27 -0800
                Re: comparison logic Keith Thompson <kst-u@mib.org> - 2017-01-14 13:56 -0800
                Re: comparison logic Richard Heathfield <rjh@cpax.org.uk> - 2017-01-15 14:45 +0000
                Re: comparison logic Tim Rentsch <txr@alumni.caltech.edu> - 2017-01-15 20:42 -0800
                Re: comparison logic Keith Thompson <kst-u@mib.org> - 2017-01-15 21:04 -0800
                Re: comparison logic Tim Rentsch <txr@alumni.caltech.edu> - 2017-01-30 04:47 -0800
                Re: comparison logic Keith Thompson <kst-u@mib.org> - 2017-01-30 11:40 -0800
                Re: comparison logic Tim Rentsch <txr@alumni.caltech.edu> - 2017-02-03 16:42 -0800
                Re: comparison logic Keith Thompson <kst-u@mib.org> - 2017-02-03 18:45 -0800
                Re: comparison logic Tim Rentsch <txr@alumni.caltech.edu> - 2017-02-08 21:03 -0800
                Re: comparison logic supercat@casperkitty.com - 2017-02-09 08:07 -0800
                Re: comparison logic Keith Thompson <kst-u@mib.org> - 2017-02-09 08:50 -0800
                Re: comparison logic supercat@casperkitty.com - 2017-02-09 12:15 -0800
                Re: comparison logic Keith Thompson <kst-u@mib.org> - 2017-02-09 12:38 -0800
                Re: comparison logic supercat@casperkitty.com - 2017-02-09 14:13 -0800
                Re: comparison logic Keith Thompson <kst-u@mib.org> - 2017-02-09 14:45 -0800
                Re: comparison logic Tim Rentsch <txr@alumni.caltech.edu> - 2017-02-12 10:20 -0800
          Re: linking precedence rules BartC <bc@freeuk.com> - 2017-01-12 14:32 +0000
          Re: linking precedence rules James Kuyper <jameskuyper@verizon.net> - 2017-01-12 13:33 -0500

csiph-web