The great inapplicable attribute debate

Tomas Lindquist Olsen tomas.l.olsen at gmail.com
Mon Apr 13 05:44:25 PDT 2009


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.



More information about the Digitalmars-d mailing list