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