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.