Path: utzoo!attcan!uunet!lll-winken!lll-tis!helios.ee.lbl.gov!pasteur!ucbvax!ATHENA.MIT.EDU!wesommer From: wesommer@ATHENA.MIT.EDU (Bill Sommerfeld) Newsgroups: comp.sys.apollo Subject: Re: Internal cpp in /usr/lib/cc != /usr/lib/cpp Message-ID: <8808240139.AA02024@OLIVER.MIT.EDU> Date: 24 Aug 88 01:39:40 GMT References: <15428@shemp.CS.UCLA.EDU> Sender: daemon@ucbvax.BERKELEY.EDU Organization: The Internet Lines: 22 MH6.5 is in error. The `Reiser' cpp (/usr/lib/cpp or /lib/cpp) happens to expand macros and macro arguments inside quoted strings, but this is not something which can be depended upon. The draft proposed ANSI C standard, which is (partially) implemented by /com/cc, specifies that the preprocessor should NOT expand macros or macro arguments inside quoted strings. If you look at other ANSI compilers (GNU CC is a good example), you will find the same behavior, although there may be some way to revert to the old, broken "reiserisms". To have source which will work with all C compilers, change the macro to: #define grot(x) case x: *dp++ = x; break; and all invocations of it to: grot('n') Bill Sommerfeld Apollo Computer/MIT Project Athena