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