Kompilieren Sie eine einfache Zeichenfolge

8

Haben Sie sich nur gefragt, ob es in C ++ eingebaute c ++ - Funktionen gibt, mit denen Sie den Compiler zur Laufzeit verwenden können? Wie zum Beispiel, wenn ich übersetzen möchte:

%Vor%

in:

%Vor%

und dann eine exe erzeugen, die dann die obige Nachricht anzeigen kann? Ich habe vor einigen Jahren ein Beispielprojekt im Internet gesehen, das das getan hat, aber es nicht mehr finden kann.

    
jay_t55 01.09.2009, 11:32
quelle

6 Antworten

15

Es ist möglich, C # zu verwenden. Sehen Sie sich dieses Beispielprojekt aus dem CodeProject an.

Code extrahieren

%Vor%     
James 01.09.2009, 11:40
quelle
5

In C ++ können Sie den Compiler zur Laufzeit nicht verwenden, aber Sie können einen Interpreter in Ihr Projekt einbetten, zB CINT.

    
Nick Dandoulakis 01.09.2009 11:36
quelle
3

Sie können es immer auf die schmutzige Art tun, mit system () und dem Aufruf des Compilers "gcc ..." oder Ihrem Äquivalent

    
Svetlozar Angelov 01.09.2009 11:39
quelle
1

Nick's Vorschlag ist gut, aber es gibt eine Alternative, die wahrscheinlich einfacher zu implementieren ist (aber möglicherweise nicht für alle Projekte geeignet ist). Wenn Sie davon ausgehen können, dass Ihr Benutzer einen Compiler installiert hat, können Sie eine Datei generieren und sie dann mit ihrem Compiler kompilieren.

    
Imagist 01.09.2009 11:42
quelle
1

Das .NET-Framework stellt einige Klassen zur Verfügung, die Ihnen Zugriff auf Compiler und Codegeneratoren für C # und VB.NET geben, was entweder zu einer in den Speicher geladenen Assembly oder zu einer einfachen .exe-Datei führt. Siehe CSharpCodeProvider und dieser Artikel .

Alternativ können Sie einfach die Quelldateien erstellen und manuell (Befehlszeilenaufrufe ( system ) für den Compiler, Makefiles) kompilieren.

Was die Übersetzung Ihrer Quelle betrifft: Sie müssen hier Parsing-Mechanismen wie reguläre Ausdrücke verwenden oder ein Compiler-Compiler-Tool wie Coco / R, Yacc usw. verwenden (Beachten Sie, dass unter% C ++ boost::spirit auch sein kann ziemlich nützlich)

    
Dario 01.09.2009 11:42
quelle
1

In C # können Sie eine .NET "CodeDom" Struktur erstellen und diese dann mit dem .NET Compiler kompilieren. Dadurch erhalten Sie vollen Zugriff auf die meisten .NET-Funktionen.

Siehe den Namespace "System.CodeDom" oder die MSDN-Hilfe für CodeCompileUnit für Details.

    
rluba 01.09.2009 11:43
quelle