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.
Es ist möglich, C # zu verwenden. Sehen Sie sich dieses Beispielprojekt aus dem CodeProject an.
Code extrahieren
%Vor%In C ++ können Sie den Compiler zur Laufzeit nicht verwenden, aber Sie können einen Interpreter in Ihr Projekt einbetten, zB CINT.
Sie können es immer auf die schmutzige Art tun, mit system () und dem Aufruf des Compilers "gcc ..." oder Ihrem Äquivalent
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.
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)
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.
Tags und Links c# c++ compiler-construction messagebox