Sie müssen einen Compiler aufrufen, um den Code zu kompilieren. Außerdem müssen Sie Code generieren, um die Zeichenfolge in eine Funktionsdeklaration zu integrieren. Schließlich müssen Sie dann irgendwie den kompilierten Code laden.
Wenn ich dies tun würde (was ich nicht nicht ) würde ich:
system()
) auf, um ein Shared zu erstellen
Bibliothek ( .dll
auf Windows oder .so
auf Linux) Dies ist wirklich nicht die Art, wie Sie C-Code in den meisten Fällen schreiben möchten.
Nein, C ++ ist ein statischer Typ, der in eine native Binärsprache kompiliert wurde.
Obwohl Sie die LLVM-JIT-Kompilierung verwenden können, kompilieren und verknüpfen Sie sie, ohne die Laufzeitumgebung zu unterbrechen. Sollte machbar sein, aber es ist einfach nicht in der Domäne von C ++.
Wenn Sie eine Skript-Engine unter C ++ verwenden möchten, können Sie zum Beispiel JS verwenden - es ist mit Abstand die schnellste dynamische Lösung auf dem Markt. Lua, Python, Ruby sind auch in Ordnung, aber in der Regel langsamer, was keine schreckliche Sache sein kann, wenn man bedenkt, dass Sie es nur für das Scripting verwenden.
In Qt können Sie beispielsweise Folgendes tun:
%Vor%Und du wirst 50 bekommen;)
Direkt, nein. Aber du kannst:
C ++ ist eine kompilierte Sprache. Sie kompilieren C ++ Quelle in Maschinencode, die ausführbare Datei. Das wird geladen und ausgeführt. Der Compiler kennt C ++ (und alle Header der Bibliothek sind verfügbar). Die ausführbare Datei tut dies nicht und deshalb kann sie keine Zeichenfolge in ausführbaren Code umwandeln. Sie können den Inhalt eines Strings ausführen, wenn er Maschinencode-Anweisungen enthält, aber das ist im Allgemeinen eine sehr schlechte Idee ...
Das bedeutet nicht, dass es nicht möglich wäre , diese Art der Laufzeitkompilierung durchzuführen. Sehr wenig (wenn überhaupt) ist in C ++ unmöglich. Aber was Sie tun würden, würde ein C ++ - Compiler-Objekt implementieren ... schauen Sie sich andere Compiler-Projekte an, bevor Sie entscheiden, dass Sie das wirklich wollen.
Interpretierte Sprachen können dies mit Leichtigkeit tun - sie müssen lediglich die Zeichenfolge an den Interpreter übergeben, der das Programm bereits ausführt. Sie zahlen diese Flexibilität in anderer Hinsicht.
Kurze Antwort ist nein. Hacker würden einen Feldtag haben. Sie können jedoch die Windows IActiveScriptSite-Schnittstelle verwenden, um Java / VB-Skript zu verwenden. Google IActiveScriptSite gibt es zahlreiche Beispiele im Internet. Oder Sie können tun, was ich gerade mache, rollen Sie Ihre eigene Skript-Engine.
Tags und Links c++