On 2015-04-21 19:01, Dan Olson wrote:
Hmmm, I can see another point of view where mangleof should produce the equivalent extern(C) symbol. My gut says this is the way it should work.
That makes sense.
If I want to call a C function void debug(const char*) from a C library, I would do this because of D "debug" keyword: pragma(mangle, "debug") extern (C) void debug_c(const(char*)); Now I would think debug_c.mangleof -> "debug" (and that is indeed what dmd produces even on OS X).
Are there use cases where one would want to use some other mangling than C? I mean, D is a system programing language.
On systems which prepend an underscore, we want compiler to take care of this so code is portable, otherwise code must do this: version (OSX) pragma(mangle, "_debug") extern (C) void debug_c(const(char*)); else pragma(mangle, "debug") extern (C) void debug_c(const(char*));
These are all good points. -- /Jacob Carlborg