"Michael Gong" <[EMAIL PROTECTED]> writes: > One explanation could be: > > ----- Original Message ----- > From: "Jan Beulich" <[EMAIL PROTECTED]> > To: <gcc@gcc.gnu.org> > Sent: Monday, September 25, 2006 11:23 AM > Subject: preprocessing question > > >> Can anyone set me strait on why, in the following code fragment >> >> int x(unsigned); >> >> struct alt_x { >> unsigned val; >> }; >> >> #define x alt_x >> #define alt_x(p) x(p+1) > > since "x" is already defined as a object-like macro, "x" is replaced by > "alt_x", so this essentially is: #define alt_x(p) alt_x(p+1) > > Since C99 (6.10.3.9) describes: > ... defines an object-like macro that causes each subsequent instance of > the macro name to be replaced by the replacement list of preprocessing > tokens that constitute the remainder of the directive.
Macro expansion does not operate on preprocessing directives unless noted otherwise. Andreas. -- Andreas Schwab, SuSE Labs, [EMAIL PROTECTED] SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany PGP key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different."