Est-il possible de compiler un code supplémentaire au moment de l'exécution en C ou C++?

Voici ce que je veux faire:

  1. L'exécution d'un programme et d'initialiser certaines structures de données.
  2. Ensuite compiler du code supplémentaire qui peut accéder/modifier les structures de données existantes.
  3. Répétez l'étape 2, si nécessaire.

Je veux être capable de le faire avec les deux C et C++ à l'aide de gcc (et éventuellement Java) sur les systèmes de type Unix (en particulier Linux et Mac OS X). L'idée est essentiellement de mettre en œuvre un read-eval-print loop pour ces langues, qui compile les expressions et les déclarations qu'ils sont entrés et l'utilise pour modifier les structures de données existantes (quelque chose qui se fait tout le temps dans les langages de script). Je suis en train d'écrire cet outil dans python, ce qui génère le C/C++ fichiers, mais cela ne devrait pas être pertinentes.

J'ai exploré le faire avec les bibliothèques partagées mais qui a appris que la modification des bibliothèques partagées n'affecte pas les programmes qui sont déjà en cours d'exécution. J'ai aussi essayé d'utiliser la mémoire partagée, mais ne pouvait pas trouver un moyen de charger une fonction sur le tas. J'ai également étudié à l'aide de code assembleur, mais n'ont pas encore tenté de le faire.

Je préfère ne pas utiliser les compilateurs autres que gcc à moins qu'il n'y a absolument aucun moyen de le faire dans gcc.

Si quelqu'un a des idées ou sait comment faire cela, toute aide sera appréciée.

  • Vous devriez regarder les version/clang. Mais un REPL pour le C ou le C++ ressemble tout à fait une tâche.
  • Quelque chose à faire avec ceci?
  • Je préfère utiliser le vrai langage de script, sauf que vous pouvez dire ce que tout cela pour
InformationsquelleAutor Matt | 2012-05-12