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