Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!usc!apple!portal!cup.portal.com!Invader From: Invader@cup.portal.com (Michael K Donegan) Newsgroups: comp.lang.c++ Subject: Re: Nested macros difference between g++ and AT&T cpp Message-ID: <37498@cup.portal.com> Date: 2 Jan 91 17:24:43 GMT References: Organization: The Portal System (TM) Lines: 18 There is another possible interpretation, you could get twoname2(x) second(first(x)) => name2(two,first(x)) => two ## name2(one,x) => twoname2(one,x) It really depends on whether the first(x) expansion is done in isolation or not. On page 374 of ARM it says "If a ## operator appears in a replacement token sequence between two tokens..." Now the ## appears between two and name2, but are we to consider the entire replacement token sequence or just the one being currently expanded? I think that your interpretation is the most likely one. It is what Think C does. mkd