Global extern(C) in druntime header files?
Mike Parker
aldacron at gmail.com
Wed Jun 5 20:10:35 PDT 2013
On Wednesday, 5 June 2013 at 20:40:59 UTC, Gary Willoughby wrote:
> On Wednesday, 5 June 2013 at 18:54:45 UTC, Jesse Phillips wrote:
>> Not going to look into the file, but I'm pretty sure
>> bsd_signal is function for an external C library right?
>>
>> If that is the case, it must use C calling convention, so yes
>> this is correct.
>
> Ah sorry i wasn't clear.
>
> The question i have is, why do i need to decorate the function
> (with extern(C)) that i pass to bsd_signal.
>
> The only reason i can see is that the type hint is decorated
> but surely it doesn't need to be.
You are passing a function pointer to a C library, where it will
be expected that the function uses the C calling convention. So
you have to declare the function as extern(C), otherwise DMD will
not compile it as such. That can cause segfaults.
More information about the Digitalmars-d-learn
mailing list