Newsgroups: comp.lang.c
Path: utzoo!henry
From: henry@utzoo.uucp (Henry Spencer)
Subject: Re: #pragma does only half the job (was Re: Pragma and noalias)
Message-ID: <1988Jul22.172848.6344@utzoo.uucp>
Organization: U of Toronto Zoology
References: <381@proxftl.UUCP> <8176@brl-smoke.ARPA> <423@proxftl.UUCP> <23349@think.UUCP> <437@proxftl.UUCP> <1988Jul10.201104.27556@utzoo.uucp> <502@proxftl.UUCP>
Date: Fri, 22 Jul 88 17:28:48 GMT

In article <502@proxftl.UUCP> bill@proxftl.UUCP (T. William Wells) writes:
>"[a pragma] causes the implementation to behave in an
>implementation-defined manner...."
>
>My reading of this says that a pragma changes the implementation,
>not (directly) the interpretation of the program.  However, the
>changed implementation must also be conforming.  This means that
>it can only change those aspects of the standard which are
>subject to choice, i.e., those things which are implementation
>defined (or one of the other indeterminate characteristics).

Sorry, no.  One of the things that is subject to choice is how the
implementation behaves when it sees #pragma!  "Conforming" means that
it conforms to a standard which includes section 3.8.6 (#pragma) --
which only says that #pragma does something implementation-defined.
The only restraint this imposes is that the behavior must be documented.

You cannot excise 3.8.6 from the document and then claim that #pragma
must conform to the resulting subset; standards must be taken as a whole.
Your argument works only if you already believe that #pragma is not
allowed to alter the meaning of other parts of the language.  This is
circular reasoning.  There isn't any way out of it; the (draft) standard
simply does not tell you whether #pragma is allowed to change the rest of
the language or not.
-- 
Anyone who buys Wisconsin cheese is|  Henry Spencer at U of Toronto Zoology
a traitor to mankind.  --Pournelle |uunet!mnetor!utzoo! henry @zoo.toronto.edu
