Kann man C++ Code in C "übersetzen"?

4 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

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.

Woher ich das weiß:Berufserfahrung – Hauptberuflich IT-Consultant, Informatikstudium

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).

Entscheidend ist der verwendete Compiler, dieser muss C++ und C können. Daher würde ich sagen müsste es gehen.


DrToxic224 
Beitragsersteller
 02.04.2021, 12:14
Kann man da den Compiler KDevelop nehmen?
0
LeBonyt  02.04.2021, 12:56
@DrToxic224

KDevelop ist kein Compiler, sondern eine integrierte Entwicklungsumgebung. gcc ist der eigentliche Compiler, zusammen mit make als BuildTool und mit ld als Linker

0

Du kannst den Code umschreiben, aber du kannst ihn allgemein nicht mit einem C Compiler compilieren