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();

Reply via email to