On Friday, 29 July 2016 at 10:57:37 UTC, ciechowoj wrote:
In C, a function `void func()` doesn't declare a function
without arguments, instead it declares a function that takes
unspecified number of arguments. The correct way to declare a
function that takes no arguments is to use the `void` keyword:
`void func(void)`.
What is the correct way to refer to such a function (`void
func()`) from D bindings?
If I assume that the unspecified number of arguments (for some
particular function) is equal to zero, is `extern (C) void
func()` a correct D binding to the both functions `void func()`
and `void func(void)` declared in C?
Specifically, I'm concerned about calling convention issues.
Yes, this is correct as long as the calling convention is not
stdcall or something else:
extern(C) void func();
If you're dealing with stdcall:
extern(Windows) void func();
And if it is a cross-platform library that is stdcall on Windows
and cdecl elsewhere:
extern(C) void fun();