This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: c++/7585: Attributes for nested typedef-name ignored
- From: Wolfgang Bangerth <bangerth at ticam dot utexas dot edu>
- To: Gabriel Dos Reis <gdr at integrable-solutions dot net>
- Cc: gcc-bugs at gcc dot gnu dot org, <gcc-gnats at gcc dot gnu dot org>
- Date: Thu, 31 Oct 2002 09:21:27 -0600 (CST)
- Subject: 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