extern(C) enum

bitwise via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Sep 15 15:29:38 UTC 2017


On Friday, 15 September 2017 at 06:57:31 UTC, rikki cattermole 
wrote:
> On 15/09/2017 5:15 AM, bitwise wrote:
>> I translated the headers for FreeType2 to D, and in many 
>> cases, enums are used as struct members.
>> 
>> If I declare an extern(C) enum in D, is it guaranteed to have 
>> the same underlying type and size as it would for a C compiler 
>> on the same platform?
>
> No need for extern(C). Be as specific as you need, but most 
> likely you won't need to (e.g. first is automatically 0).
>
> enum Foo : int {
> 	Start = 0,
> 	StuffHere
> 	End
> }

This is for D/C interop though.

enum E {
     A, B, C
}

struct S {
    E e;
}

So based on the underlying type chosen by each compiler, the size 
of struct S could change.

I can't strongly type the D enums to match, because I don't know 
what size the C compiler will make 'E', unless D somehow 
gauntness the same enum-sizing as the C compiler would.



More information about the Digitalmars-d-learn mailing list