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.