The great inapplicable attribute debate

Denis Koroskin 2korden at gmail.com
Mon Apr 13 06:00:16 PDT 2009


On Mon, 13 Apr 2009 16:44:25 +0400, Tomas Lindquist Olsen <tomas.l.olsen at gmail.com> wrote:

> On Mon, Apr 13, 2009 at 2:05 PM, Frits van Bommel
> <fvbommel at remwovexcapss.nl> wrote:
>> Kagamin wrote:
>>>
>>> Stewart Gordon Wrote:
>>>
>>>> At the moment, the problem seems to be that the compiler is silently
>>>> ignoring many cases of (a), (b) and (c) alike.  Some people argue  
>>>> that the
>>>> spec doesn't forbid such use of inapplicable attributes explicitly,  
>>>> and so
>>>> the compiler's treatment of these cannot be called a bug.
>>>>
>>>> I argue that this isn't right.  Nothing I've managed to find in the  
>>>> spec
>>>> states or implies that such obviously wrong code is allowed.  So, by
>>>> applying common sense, one would conclude that it isn't allowed.
>>>
>>> Such mood was always in the spec: "AlignAttribute is ignored when  
>>> applied
>>> to declarations that are not structs or struct members".
>>
>> I never saw that before. So it doesn't work for class members? And it  
>> won't
>> change the alignment of unions if applied to union members (by changing  
>> the
>> maximum alignment of the members)?
>>
>
> align is defined in terms of the companion C compiler.
>
> align(16) int foo; does not guarantee that foo.offsetof is aligned to 16  
> bytes.
> Since C doesn't have D classes, the align attribute makes little sense  
> here.

You are kind of contradict yourself.

Let's assme that align is defined in terms of the companion C compiler.
Then, since C doesn't have D classes, the align attribute makes little sense when applied to /D classes/.

I don't know how to judge about C built-in types from that.




More information about the Digitalmars-d mailing list