dsimcha wrote:
== Quote from Don ([email protected])'s article
BLS wrote:
Hi,
I think nearly nobody is using extern (C++) 'cause of it's limits. So
why not drop it ? IMHO this feature is not a " D2 sales argument",
instead it's vs. productive.
What do you think ?
Bjoern
There's a much more fundamental problem with it: C++ doesn't support it!
You can't compile a file with MSVC and link it to something compiled
with g++.
Look up my CodeProject article on member function pointers -- every
vendor has their own API, and virtually none of them are documented.
On Windows, extern(C++) means extern(DMC++), but for me, the only thing
I'd want to link to is MSVC. Much more useful would be, as Brad says, to
provide a way of specifying the name mangling. If we could do that, we'd
be more compatible with C++ than C++ is to itself.
There's a lot more to compatibility than name mangling.
This brings up another important point: If any implementation of extern(C++) is
tied to a specific C++ compiler anyhow
extern(C) is also tied to a particular C compiler.
(probably the one made by the same people
that made the D compiler) then why the heck is it so limited? The rationale for
it being so limited was that doing it better would practically require
implementing a C++ compiler.