extern(C) enum

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


On Friday, 15 September 2017 at 07:24:34 UTC, Jonathan M Davis 
wrote:
> On Friday, September 15, 2017 04:15:57 bitwise via 
> Digitalmars-d-learn 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?
>
> extern(C) should have no effect on enums. It's for function 
> linkage, and enums don't even have an address, so they don't 
> actually end up in the program as a symbol. And since C's int 
> and D's int are the same on all platforms that D supports (we'd 
> have c_int otherwise, like we have c_long), any enum with a 
> base type of int (which is the default) will match what's in C.
>
> - Jonathan M Davis

I'm confused...is it only C++ that has implementation defined 
enum size? I thought that was C as well.



More information about the Digitalmars-d-learn mailing list