C++-Code in C umwandeln
-
Kennt jemand ein Tool, um C++-Code welcher Klassen enthält (aber sonst keinen Gebrauch von Templates, STL ect. macht) in C-Code umzuwandeln?
-
Für was benötigst Du denn das?
Gibts ev. andere Lösungen.Scheint mit keine einfache Sache zu sein.
Simon
-
Ich glaub, dass macht Comeau C/C++ Compiler.
-
Es gibt einige Compiler, die C als Zwischencode für C++ benutzen. zB der Comeau (oder cfront).
Aaaaaaaaber: Erwarte nicht, dass du da leserlichen Code rausbekommt! Wenn du C++ in leserliches C umwandeln willst, dann portiere es per Hand.
-
Nimlot schrieb:
Kennt jemand ein Tool, um C++-Code welcher Klassen enthält (aber sonst keinen Gebrauch von Templates, STL ect. macht) in C-Code umzuwandeln?
aus
class blah { ... };
mach
typedef struct blah { ... } blah;
alle member-funktionen aus den structs rausnehmen und umschreiben:
void bla::machwas (...) { .... }
wird zu:
void machwas (blah *b, ...) { }
konstruktoren/destruktoren schreiben
void create_blah (blah *b) { ... } ... void destroy_blah (blah *b) { ... }
private, public, protected rausschmeissen
new/delete abändern von:blah *b = new blah();
nach:
blah *b = malloc (sizeof(blah)); create_blah (b); // <--- konstruktor
aus:
delete b;
wird
destroy_blah (b) // <--- destruktor free (b);
vererbung:
class base { ... }; ... class derived public base { ... };
wird zu
typedef struct base { ... } base; ... typedef struct derived { base b; ... } derived;
konstruktor für abgeleitete klasse:
void create_derived (derived *d) { create_base (d->b); // <-- basisklassen-konstruktor aufrufen ... }
^^ beim destruktor ebenso den basisklassen-dtor aufrufen
usw, usw...
ist etwas fummelei, aber nicht allzu schwierig
-
@fricky
du kommst hoffentlich nicht auf die idee das von hand zu machen
geht doch leicht mit bash
-
sh schrieb:
du kommst hoffentlich nicht auf die idee das von hand zu machen
kommt drauf an, wie viel es ist.
[code]
geht doch leicht mit bash
[/quote]
zeig mal wie...
-
Hi,
ich muss auch (leider) einen C++-Quelltext in C umwandeln, daher mal meine Frage an sh: Wie kann man das "ganz leicht" mit der bash machen?
-
igitt, ist das scheußlich.
-
@ Erhard Henkes
Wem sagst du das? Aber es gibt halt leider noch paar Plattformen die keine rtl für c++ haben und die auch nicht groß genug dafür sind.