Michel Fortin <[email protected]> writes: > > I think if you specify the mangling most of the time it's because you > don't want the compiler to do it for you. But you should consider > doing this: > > string mangleC(string name) { > version (OSX) return "_" ~ name; > else return name; > } > > pragma(mangle, mangleC("debug")) extern (C) void debug_c(const(char*));
I found that exists as core.demangle.mangleC() does exactly that, just added last fall. Since the compile chain knows whether the target system prepends an underscore, I wonder if it can be bubbled up into some compiler trait or version that prevents writing versioned code based on system. I think it would help gdc much as it has many targets, and many prepend underscore to symbols. It would help with unittests like compilable/cppmangle.d that would have to be tailored for every OS. that uses gcc3 style C++ mangling.
