C callbacks getting a value of 0! Bug in D?
Mike Parker via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Mon Aug 28 18:57:10 PDT 2017
On Tuesday, 29 August 2017 at 01:34:40 UTC, Johnson Jones wrote:
> import core.stdc.config;
> pragma(msg, c_long.sizeof);
>
> prints 4UL
>
> both on x64 and x86
>
> and and C:
>
> void foo()
> {
> int dummy;
> switch (dummy) {
> case sizeof(long) :
> case sizeof(long) :
> break;
> }
> }
>
>
> produces 4 on both x86 and x64. So, I'm not sure how you are
> getting 8.
It's because you're on Windows. There, long/ulong are 4 bytes in
both 32- and 64-bit. On Linux/Mac/*BSD, they're 4 in 32-bit and 8
in 64-bit. This is why we have c_long and c_ulong, to hide those
differences.
More information about the Digitalmars-d-learn
mailing list