Многие языки сценариев предлагают такую функцию, вплоть до eval
в LISP - но C и C ++ не предоставляют компилятор во время выполнения.
В спецификации нет ничего, что мешало бы вам создавать и исполнять произвольный машинный язык, например:
char code[] = { 0x2f, 0x3c, 0x17, 0x43 }; // some machine code of some sort
typedef void (FuncType*)(); // define a function pointer type
FuncType func = (FuncType)code; // take the address of the code
func(); // and jump to it!
но из-за соображений безопасности в большинстве сред происходит сбой, если вы попытаетесь это сделать. (Многие вирусы работают, убеждая обычные программы сделать что-то подобное.)
В обычной среде одну вещь, которую вы можете сделать, это создать полную программу в виде текста, затем вызвать компилятор, чтобы скомпилировать ее, и вызвать получившийся исполняемый файл.
Если вы хотите запустить код в своем собственном пространстве памяти, вы можете вызвать компилятор для создания библиотеки DLL (или .so, в зависимости от вашей платформы), а затем связать ее с DLL и перейти в нее.