Mark Williams C

Roger Critchlow rec at elf115.uu.net
Mon Jun 5 16:51:31 AEST 1989


In article <13522 at haddock.ima.isc.com>, karl at haddock.ima.isc.com (Karl Heuer) writes:
> I think that, instead, I'll add the equivalent of
> 	#if defined(__STDC__) && __STDC__ <= 0
> 	#undef __STDC__
> 	#endif

Sorry, you aren't allowed to #undef __STDC__.

"The rule that these macros may not be redefined or undefined reduces
the complexity of the name space that the programmer and implementor
must understand;"  [Rationale for dpANS C, 13-May-88, p. 67]

> until someone decides just what __STDC__==0 is supposed to mean.

It means that MWC does not claim dpANS conformance.  The preprocessor
conforms to dpANS in all respects except for the value of __STDC__.
Since this makes it behave differently than previous versions of the
preprocessor, it seemed reasonable to give some indication of the
fact.  The Rationale suggested that:  "This macro should be of use in
the transition toward conformance with the Standard."  [Ibid., p. 68]
so I made use of it.

Since the Rationale suggested that "future versions of the Standard
could define [ __STDC__ ] as 2, 3, ..." [Ibid.] I should have known
right off that everyone would poll its value with #ifdef.  :-)
I missed that clue and the deed was done by the time everybody's C
magazines were cranking out examples filled with #ifdef __STDC__
conditionals.

I am sorry for the inconvenience which my perverse interpretation
has caused users of the MWC compiler.

> Does MWC, running on a non-UNIX system, predefine `unix' to be `0'?

No, MWC only runs on non-UNIX systems, it never defines unix to be
anything.

-- rec at elf115.uu.net == uunet!elf115!rec == Roger Critchlow, Sea Cliff, NY --



More information about the Comp.std.c mailing list