Kann man C++ Code in C "übersetzen"?
Also die Frage ist, ob man einen C++ Code in eine C Datei einfügen kann?
Müsste doch eigentlich funktionieren oder?
4 Antworten
![](https://images.gutefrage.net/media/default/user/15_nmmslarge.png?v=1551279448000)
Jein.
Du kannst den C++-Code in C-Äquivalente umsetzen. Diese Arbeit müsstest du aber manuell erledigen, da gibt es meines Wissens nach kein automatisiertes Werkzeug für.
Du kannst außerdem C++-Funktionen kompilierter C++-Objekte in C-Programmen nutzen (über den Linker). Hierfür müsstest du aber den richtigen Namen kennen, denn der Compiler betreibt Name Mangling, sofern du im C++-Code kein extern "C" verwendest. Dies wird verwendet, um überladene Funktionen zu ermöglichen. Und alles, was mit Klassen oder C++-Features zu tun hat, ist für die Nutzung von C++-Funktionen in C eher schwierig.
Angesichts des Aufwands wäre es die beste Option, einfach in C++ zu programmieren, wenn du eine C++-Bibliothek hast, für die es keine C-Header gibt. Letzten Endes kannst du aber auch mit C++-Compiler weitenteils in C programmieren, daher dürfte das kein Thema sein.
![](https://images.gutefrage.net/media/default/user/11_nmmslarge.png?v=1551279448000)
In den Anfangstagen von C++ gab es tatsächlich einen Übersetzer, der C++ in C übersetzt hat... Aber irgendwann gab es dann einen eigenständigen C++ Compiler und die Sprachen sind meines Wissens auch nicht mehr zu 100% kompatibel. Ein solcher Compiler hätte nur akademischen Charakter (würde in der Realität nichts bringen), daher bezweifle ich fast, dass es immer noch so was gibt.
So einfach mit C++-Code einfügen kann das nicht funktionieren, da C keine Objekte kennt und kein Überladen von Methoden oder Operatoren.
Aber anders herum geht. Du kannst den meisten C-Code mit einem C++ Compiler kompilieren (gibt ein paar Ausnahmen).
![](https://images.gutefrage.net/media/user/LeBonyt/1553190555784_nmmslarge__5_5_160_160_23469c76ccd9796e9cb38ca6b6f0ac87.png?v=1553190556000)
Entscheidend ist der verwendete Compiler, dieser muss C++ und C können. Daher würde ich sagen müsste es gehen.
![](https://images.gutefrage.net/media/default/user/10_nmmslarge.png?v=1551279448000)
![](https://images.gutefrage.net/media/user/LeBonyt/1553190555784_nmmslarge__5_5_160_160_23469c76ccd9796e9cb38ca6b6f0ac87.png?v=1553190556000)
KDevelop ist kein Compiler, sondern eine integrierte Entwicklungsumgebung. gcc ist der eigentliche Compiler, zusammen mit make als BuildTool und mit ld als Linker
![](https://images.gutefrage.net/media/default/user/9_nmmslarge.png?v=1551279448000)
Du kannst den Code umschreiben, aber du kannst ihn allgemein nicht mit einem C Compiler compilieren
![](https://images.gutefrage.net/media/default/user/10_nmmslarge.png?v=1551279448000)
Gibt es denn da so etwas wie ein "Übersetzer" in C?
![](https://images.gutefrage.net/media/default/user/9_nmmslarge.png?v=1551279448000)