On 22.11.22 22:11, XavierAP wrote:
I was surprised when it didn't compile, though I immediately found it
understandable...
Already read through https://dlang.org/spec/interfaceToC.html
and https://wiki.dlang.org/Bind_D_to_C
Is it really the case (that an extern(C) function pointer cannot be
assigned to a D variable)? Or is it a matter of annotating with the
right attributes? If so, how?
Works for me:
import core.stdc.stdio: puts;
auto p1 = &puts;
extern (C) int function(const char* s) p2 = &puts;
If you're trying to assign an `extern (C)` function pointer to an
`extern (D)` one (the default), that cannot work. The compiler would
emit code using D's calling convention, but the called function would
assume C's calling convention.