Objektorientierte C-Programme, Preprocessor

thewolf

Neuling
Thread Starter
Mitglied seit
21.03.2006
Beiträge
2
Hallo!

Habe ein etwas spezielles Anliegen und hoffe, dass einer von euch vielleicht eine Lösung/einen Lösungshinweis dazu hat.

Man kann auch in C objektorientiert programmieren (ja, in C++ wärs einfacher, aber das ist hier leider keine Option). Leider bietet C diese Funktionalität nicht von Haus aus an, daher muss man sich das Ganze selbst zusammenbauen (Beispiel für Interessierte: unten).

Damit ich das nicht für jedes Programm von Hand machen muss, will ich ein Perlprogramm haben, dass die entsprechenden C-Sourcefiles als Argument geliefert bekommt und die 'Übersetzung' des Pseudo-Objektorientierten-Codes in echten C-Code übernimmt.

Weiß einer von euch, ob es sowas schon irgendwo gibt? Oder muss ich es selbst schreiben?

Jedwege Hilfe willkommen...

Erweiterte OO-Funktionalität wie Vererbung usw. ist nicht notwendig.

MfG,
thewolf

-------
Codebeispiel in C:

Main:
Code:
int main( void )
{
   testklasse* t;

   t = S0testklasseOBJC();

   t->setI( t, 12 );
   t->getI( t );

   return 0;
}

Pseudo-Code, der von Hand geschrieben und per Perlprogramm übersetzt werden soll:
Code:
CLASS testklasse {
   PRIVATE:
      int i;

   PUBLIC:
      void setI( int i );
      int getI();

      testklasse();
};

void testklasse::setI( int i )
{
   THIS->i = i;
} 

int testklasse::getI()
{
   return THIS->i;
}

testklasse::testklasse()
{
   THIS->i = 0;
}

So soll die Implementierung in echtem C aussehen, nachdem das Perlprogramm preprocessed hat:
Code:
typedef struct OBJCtestklasse testklasse;

struct sOBJCtestklasse {
   int i;
   void ( *setI )( testklasse*, int );
   int  ( *getI )( testklasse* );
}; 

void setI( testklasse* THIS, int i )
{ 
   THIS->i = i;
}
 
int getI( testklasse* THIS )
{
   return THIS->i;
}
 
testklasse* S0testklasseOBJC()
{
   testklasse* THIS = ( testklasse* )malloc( sizeof( sOBJCtestklasse ) );
   if( !THIS )
      return THIS;
   this->setI = setI;
   this->getI = getI;


   THIS->i = 0;

   return THIS;
}
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Deine Frage war: "Weiß einer von euch, ob es sowas schon irgendwo gibt?" aber ich versteh nicht obwohl ich mir deinen text jetzt genau durchgelesen ahbe, was genau du suchst.

Suchst du ein Übersetzungsprogramm?? Was sowas macht was du hier in den Code teilen zeigst??
 
Laessig schrieb:
Suchst du ein Übersetzungsprogramm?? Was sowas macht was du hier in den Code teilen zeigst??

Ja, ich suche ein Programm, dass das vorletzte Codebeispiel ins das letzte Codebeispiel übersetzt. Muss nicht 1:1 so umgesetzt werden wie im Beispiel, nur sollte sich der Syntax zumindest an die C++ Konventionen anlehnen. Objective-C kann das beispielsweise, ist aber wegen des Syntax nicht erwünscht.

Kurz gesagt suche ich irgendein Programm/Script, dass objektorientierten Pseudocode in C-Code umsetzt, der die Objektorientiertheit simuliert. Und hoffe, dass es das irgendwo schon gibt.
 
:hmm: mir kommt das alles sehr bekannt vor was du erzählst, ich bilde mir ein das wir sowas mal in der schule früher brauchten aber an den namen des programms kann ich mich daweil leider nicht erinnern.

Ich werde mich aber melden wenn es mir einfällt. Wie gesagt mir liegts auf der Zunge aber fällt mir nicht ein.
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh