Why does C standard consider each compiler flag a separate implementation?

Daniel R. Levy levy at ttrdc.UUCP
Mon Jun 13 10:45:34 AEST 1988


A while ago, on comp.lang.c, I brought up a point about the trouble "volatile"
might cause in that it would imply license to a compiler to consider all
variables not so labeled to be non-volatile.  This in conjunction with an
optimizer which misses no tricks would break old code which depends on volatile
behavior of, say, globals.  I further expressed the desire that if "volatile"
were kept, that there also be specified a way (e.g. compiler flags) of telling
the compiler not to assume everything not so labeled is non-volatile without
having to actually go in and edit the code manually.  I also asked in con-
junction with this if the proposed ANSI C standard had anything to say about
flags to the compiler.

Someone responded (I can't find the article now) and said that the proposed
ANSI C standard considers each variation in the behavior of a compiler as
influenced by, say, an external flag to be a separate implementation.

Perhaps this language puts my proposal beyond the self-described scope
of the proposed standard (does it really?) but my question now, is:  WHY does
the proposed standard say this?  The definition if taken literally
is silly.  If it be taken literally, this means each UNIX C compilation system
out there comes with billions of "implementations" of the compiler (considering
all the different things that can be defined on the command line with -D and the
various permutations of optimization, etc. flags).  I could perhaps understand
this attitude if there are C compilation systems out there that have no way
of implementing compile-time directives but that also seems silly to me.
(Like, the compiler has to be told where the input and output are, right?
Why can't it be told more?)

De-mystify me, please?
-- 
|------------Dan Levy------------|  THE OPINIONS EXPRESSED HEREIN ARE MINE ONLY
|    AT&T  Data Systems Group    |  Weinberg's Principle:  An expert is a
|        Skokie, Illinois        |  person who avoids the small errors while
|-----Path:  att!ttbcad!levy-----|  sweeping on to the grand fallacy.



More information about the Comp.lang.c mailing list