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