rfc: macros accepting constructors

Tim Hollebeek tim@hollebeek.com
Thu Jun 27 10:22:00 GMT 2002


On Thu, Jun 27, 2002 at 05:22:54PM +0100, Joern Rennecke wrote:
> >Aldy Hernandez <aldyh@redhat.com> writes:
> >
> >|> the cleanest solution i can think of is modifying the preprocessor to
> >|> allow grouping with curlies as well.
>
> It would if that grouping is only enabled for macros that are
> defined in a way that is non-standard or invokes implementation-defined
> behaviour.
> E.g. we could precede the macro definition with a
> #pragma gcc initializer_argument ,
> or have some funky syntax for the macro definition, like:
> 
> #define foo({x}) bar((x))

How gross.

Perhaps the best suggestion (if anything is desirable) is to modify
grammar so that ()'s are allowed around any grammar element which is
surrounded by {}'s.  Then all you have to do is remember to use ({ and
}) whenever you want to use {...,...,...} inside a macro.

Silly example:

#define func(name, body) void name(void) body

func(foo, ({ int x, y; }))

==>> void foo(void) ({ int x, y; })

== void foo(void) { int x, y; }



More information about the Gcc mailing list