C's void func() vs. void func(void).
Mike Parker via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Fri Jul 29 05:15:22 PDT 2016
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();
More information about the Digitalmars-d-learn
mailing list