J'ai trouvé un besoin d'exécuter du code C ++ dans le terminal. Lorsque vous réfléchissez à la manière de procéder, la commande exec
de Python est parfaite. Malheureusement, je ne peux pas l'utiliser car j'ai besoin d'un parallèle C ++.
Existe-t-il une commande similaire en C ++?
3 Réponses :
Il n'y a pas d'équivalent parfait de exec ()
en C ++ que je sache, car C ++ n'est pas conçu pour être utilisé normalement de cette façon.
system ()
vient à l'esprit comme un équivalent proche du haut de ma tête, bien que je vous prévienne que system ()
n'est généralement pas recommandé pour une utilisation dans le code de production a>.
Cependant, si aucune des raisons de la question liée ne vous dérange, vous pouvez théoriquement construire un exec ()
à partir d'une combinaison de system () et
exit ()
:
void exec(const char* command, int code=0) { system(command); exit(code); }
Edit: Je suis peut-être loin. Il peut y avoir un exécutable en C ++ . Consultez également cette question .
La réponse courte est non, c ++ ne prend pas en charge l'évaluation et l'exécution de code arbitraire.
Si vous avez besoin de l'aide aux scripts, utilisez un langage de script. Lua et python sont raisonnablement faciles à intégrer. chaiscript ressemble même beaucoup à du code C ++.
Vous pouvez appeler un compilateur à partir de votre programme, puis exécuter l'exécutable résultant, mais je doute que ce soit une bonne solution quel que soit votre problème.
https://docs.python.org/3/library/functions .html # exec
exec (objet [ globals [ locaux]])
Cette fonction prend en charge l'exécution dynamique du code Python.
Il n'y a pas de fonction équivalente ou similaire en C ++.
Non. C ++ est généralement compilé et non interprété.
Serait-il possible d'avoir le code compilé sur la base d'une commande? Comme envoyer
g ++ nom de fichier
et obliger une toucheenter
?Vous pouvez certainement demander à votre programme python de générer du code C ++, de l'écrire dans un fichier, puis d'appeler
g ++
pour le compiler, puis en supposant que tout se passe bien, exécutez-le. Mais cela ressemble à un problème XY . Quel est le vrai problème que vous essayez de résoudre. Non, pas celui sur l'exécution dynamique du code C ++, mais le problème auquel la solution que vous pensez est d'exécuter le code C ++ dynamiquement.Venant d'un arrière-plan de programmation C, on bifurquerait le processus, et
execvp
en son sein. Quelque chose comme codereview.stackexchange.com/a/177377 pourrait fonctionner pour lancer un exécutable. Si c'est ce que vous demandez?std :: system ()
peut soyez proche de ce dont vous avez besoin, mais n'est pas toujours recommandé .Demandez-vous un environnement C ++ interactif dans lequel vous pouvez taper du code et voir le résultat immédiatement sans compilation, juste pour une utilisation de débogage ou d'expérimentation, comme ipython ou irb?
@Cygnus Je ne comprends pas comment la réponse acceptée pourrait éventuellement répondre à votre question. Il n'y a aucun moyen d'exécuter du code dynamiquement en utilisant le
système
de C ++ ou l'une des fonctions non standard de la familleexec *
. Ceux-ci sont utilisés pour exécuter des commandes externes.exec
de Python ne l'est pas. Il injecte du code dans un programme en cours d'exécution.@TedLyngmo Comme @Chipster l'a déclaré dans sa réponse - il n'y a pas d'équivalent parfait. La réponse donnée était la plus proche de
exec
en Python.@Cygnus C'est juste qu'aucune de ces suggestions ne peut être utilisée pour faire quoi que ce soit à distance proche de ce que fait
exec
en python et quiconque recherche un équivalent Pythonexec
en C ++ va perdre du temps à essayer de comprendre comment utiliser la réponse. Au moins, mettez un exemple de code Pythonexec
dans la question pour qu'il devienne clair dans quelles situations la réponse peut aider pour les futurs lecteurs, car je ne peux penser à aucune.