This is the mail archive of the gcc-bugs@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: c++/7585: Attributes for nested typedef-name ignored


> |     I can see this as well, but I imagine the syntax is wrong:
> |     shouldn't it be
> |         typedef struct { } __attribute__((__aligned__(__alignof__(int)))) Y;
> |     
> |     instead of
> |     
> |         typedef struct { } Y __attribute__((__aligned__(__alignof__(int))));
> |     
> |     ??
> 
> Maybe.  But then, I think __alignof__(Y) should return
> __alignof__(int) if the attribute is being applied to Y.
> 
> Said differently, what do you envision for the "right" syntax for
> 
>    typedef unsigned char type[sizeof(int)] 
>              __attribute__((__aligned__(__alignof__(int))));

I have no clue. I think that the weird C declaration syntax is probably 
just not suited for the application of attributes.

And maybe it's simpler to understand if you make up the typedef in steps, 
say
  typedef unsigned char array[...]
  typedef aligne_array __attribute__(...) aligned_array;
(or the attributes somewhere else).

I think it would help to have a formal specification of attribute 
placement somewhere. Although it would probably be so complicated that 
nobody would want to read it...

Regards
  Wolfgang

-------------------------------------------------------------------------
Wolfgang Bangerth              email:           bangerth@ticam.utexas.edu
                               www: http://www.ticam.utexas.edu/~bangerth



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