Ich frage mich nur, warum Name Mangling wurde nie durch den C++ - Standard standardisiert. Offensichtlich schadet die Verwendung unterschiedlicher Namensverfälschungsalgorithmen der Interoperabilität [1], und ich sehe keinen Vorteil darin, sie implementationsdefiniert zu haben.Warum Name Mangling nicht standardisiert
Das heißt, im Gegensatz zu Aufrufkonventionen oder Größe von Primitiven ist die Maschine selbst egal oder weiß nicht einmal, wie die Funktion aufgerufen wird. Warum also war es nicht standardisiert und warum ist es immer noch nicht standardisiert? Compiler haben die Regeln in der Vergangenheit ohnehin zwischen den Versionen geändert.
[1] sprechen alle Leute, die Funktionen wie extern "C"
exportieren, Bände.
Der standardisierte Name Mangling dient nur dazu, Ihnen ein falsches Gefühl der Sicherheit zu geben, weil Sie auch die ABI standardisieren müssen, um die richtige Interoperabilität zu erhalten. Und das C++ - Standardkomitee dürfte nicht im ABI-Standardisierungsgeschäft vertreten sein. –
+1 @Raymond - Lügen Sie sich über Interoperabilität ist schlechte Nachrichten überall. Es ist, als würde man sich auf undefiniertes Verhalten verlassen. Sicher, du * denkst * es funktioniert, aber es tut es wirklich nicht. –
Richtig, ein C++ - ABI zu vereinbaren wäre viel schwieriger als für C.Leicht OT: Was genau in dieser Frage wird von 3 Leuten nicht als gut für SO gehalten? Schließlich existiert ganz klar eine gute eindeutige Antwort, wie bereits gezeigt. – Voo