This is the mail archive of the 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: Deprecate (a little bit) of C++ attribute syntax

--On Wednesday, August 14, 2002 02:08:17 AM +0200 Gabriel Dos Reis <> wrote:

Mark Mitchell <> writes:

| Currently, the C++ front end accepts this syntax:
|   int x (3) __attribute__((unused));


| Therefore, I'm proposing deprecating this syntax in GCC 3.3 and
| removing it in GCC 3.4 (with the new parser).

|  I'm not sure if I can
| get the old parser to actually warn about this (it's confused and
| thinks the parenthesized initializer is part of the declarator, but
| there is then later magic to untangle that!)

Do you think it is the same reason why it seems to ignore
attributes for nested typedef-names? I.e. in

   struct A {
      struct X { } __attribute__((__aligned__(4)));
      typedef struct { } Y __attribute__((__aligned__(4)));
That's probably caused by something else -- but it could well be related.
I mostly agree with all of yours suggestions -- as you know, I've been
working on the attribute stuff these days.  The oddity you mention may
be more prenicious.  Consider:

   template<typename T>
      struct X { } __attribute__((__aligned__(__alignof__(T))));

This may, at first sight, look innocent, but it doesn't do the obvious
thing one thinks of.
Again, similar -- but different.  (I was only worrying about the
parenthesized initializer case.)

The attributes after the curly brace case is interesting too, though.

This syntax (unlike the one I mentioned) has been supported by the C
front end for a long time, which makes it much harder to deprecate in


Mark Mitchell      
CodeSourcery, LLC  

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