Path: utzoo!attcan!utgpu!jarvis.csri.toronto.edu!mailrus!cs.utexas.edu!uunet!portal!cup.portal.com!Tim_CDC_Roberts From: Tim_CDC_Roberts@cup.portal.com Newsgroups: comp.lang.c Subject: Standard Clarification Message-ID: <23218@cup.portal.com> Date: 20 Oct 89 16:54:27 GMT References: <20974@gryphon.COM> <1150@crdos1.crd.ge.COM> Distribution: usa Organization: The Portal System (TM) Lines: 26 While attepting to test some of the entries in the Obfuscated C Contest, I find that Microsoft C 5.0 fails to compile constructs such as the following: #define d define #d a include #a MSC complains that "d" is an unknown preprocessor directive and aborts. Does the standard require that this construct should compile correctly? I also encountered one occurrance of something like the following: #include #define abcde getchar ... ch = abcde(); The preprocessor substituted 'getchar' for 'abcde', but then failed to expand the 'getchar()' macro from stdio. This resulted in an "Unresolved External: _getchar" at load time. Isn't the preprocessor legally and morally bound to recursively substitute macros, at least until a cycle is found? Tim_CDC_Roberts@cup.portal.com | I Survived The ...!sun!portal!cup.portal.com!tim_cdc_roberts | Great Quake of '89.