On Friday, 18 January 2013 at 17:47:42 UTC, nazriel wrote:
lib.d:

extern(C) void printf(const char*, ...);

void foo() {
        printf("%s".ptr, "hi".ptr); 
}

test.d:

extern(C) void _D3lib3fooFZv();

void main() {
        _D3lib3fooFZv();
}

On Friday, 18 January 2013 at 18:18:07 UTC, Andrej Mitrovic wrote:
That's a *terrible* idea, you are calling a D function using the C convention, you're going to have all sorts of problems. extern(D) is
not just used for mangling, it's also used for designating how
parameters are passed to and results are returned from a function (via
stack/registers).

On Friday, 18 January 2013 at 18:50:01 UTC, nazriel wrote:
It's valid example as long as you objump object file.

It's a bad example. You just got lucky in that the calling conventions match in that particular case.

Reply via email to