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.


Anmelden zum Antworten