Wouldn't this be better with bitfields?
claptrap
clap at trap.com
Wed Jul 10 08:24:55 UTC 2024
On Tuesday, 9 July 2024 at 11:58:14 UTC, Mike Parker wrote:
> On Tuesday, 9 July 2024 at 10:57:02 UTC, claptrap wrote:
>
>>
>> You have completely missed the point. Struct layout doesn't
>> change, it's fixed, it doesn't depend on what C compiler is
>> attached.
>
> The layout is fixed, but alignment and padding are
> implementation specific.
>
>>
>> It's not C-compatibility, but letting the under specification
>> of C bitfields basically infect D. Its the tail wagging the
>> dog. Or leaky implementation. If I have a D program that links
>> a dll or static lib also written in D, they could have
>> incompatible bitfield layouts.
>>
>> You could fix this by specifying the layout for D bitfields,
>> and using extern(C) when compatibility with the relevant C
>> compiler is required. D already does that for classes and
>> functions...
>
> `extern(C)` does not affect the layout of anything, as far as I
> know. It only impacts name mangling and calling convention.
> Using it to change layout would be a new feature.
>
> When I worked on Derelict and BindBC, I would have loved to
> have had bitfields in D. And I would have expected them to line
> up with the associated C compiler out of the box, because
> that's what already happens with structs.
Apparently I'm an idiot who has no idea what he's talking about.
Sorry.
More information about the Digitalmars-d
mailing list