This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: rfc: macros accepting constructors


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; }


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]