Path: utzoo!utgpu!watmath!clyde!att!pacbell!ames!haven!adm!smoke!gwyn
From: gwyn@smoke.BRL.MIL (Doug Gwyn )
Newsgroups: comp.std.c
Subject: Re: What's implementation defined?
Message-ID: <9064@smoke.BRL.MIL>
Date: 4 Dec 88 18:20:45 GMT
References: <8457@alice.UUCP> <219@twwells.uucp> <1988Nov28.215053.3129@utzoo.uucp> <229@twwells.uucp> <9034@smoke.BRL.MIL> <1988Dec3.224807.29121@utzoo.uucp>
Reply-To: gwyn@brl.arpa (Doug Gwyn (VLD/VMB) )
Organization: Ballistic Research Lab (BRL), APG, MD.
Lines: 16

In article <1988Dec3.224807.29121@utzoo.uucp> henry@utzoo.uucp (Henry Spencer) writes:
>Also, returning for a moment to refusal to compile not being an option,
>the ice is thin here in places.  For example, one can write something
>like "#include x y z" where x, y, and z are macros, and the manner in
>which the resulting preprocessor tokens between (e.g.) a `<' and a `>' are
>combined into a single header name is implementation-defined.  That means
>the combination has to happen, somehow.  However, there is no guarantee
>that the combination function will yield useful results.

I don't see that this example is at all on thin ice.  Using the
implementation definition, a definite header name must be produced,
or else it is illegal syntax.  The syntax for #include is spelled out.
Also what happens once has a header name is spelled out.  How does
this differ from
	#include "foo"
?  If no file matching the name exists, it is an incorrect program.