Calling C functions
Jacob Carlborg
doob at me.com
Mon Jun 29 17:50:03 UTC 2020
On Monday, 29 June 2020 at 16:34:33 UTC, Steven Schveighoffer
wrote:
> Are you sure? On the ABI page [1] , it says "The extern (C) and
> extern (D) calling convention matches the C calling convention
> used by the supported C compiler on the host system."
In that case the documentation is wrong. Here's an example
showing the differences:
$ cat foo.c
#include <stdio.h>
void foo(int a, int b)
{
printf("a=%d b=%d\n", a, b);
}
$ clang -c foo.c
$ cat main.d
pragma(mangle, "foo") extern (D) void foo_extern_d(int, int);
pragma(mangle, "foo") extern (C) void foo_extern_c(int, int);
void main()
{
foo_extern_d(1, 2);
foo_extern_c(1, 2);
}
$ dmd main.d foo.o
$ ./main
a=2 b=1
a=1 b=2
This is on macOS.
--
/Jacob Carlborg
More information about the Digitalmars-d-learn
mailing list