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.

Reply via email to