C 从另一个程序创建一个程序?

C 从另一个程序创建一个程序?,c,executable,C,Executable,我正在制作一个应用程序,它将根据最终用户输入到程序中的内容创建一个工作的可执行文件 例如: if (make_annoying_sounds == true) { //Generates an executable that makes annoying beeping sounds } else { //Generates an executable that doesn't make annoying beeping sounds } 基本上,我希望我的程序生成/创建另一

我正在制作一个应用程序,它将根据最终用户输入到程序中的内容创建一个工作的可执行文件

例如:

if (make_annoying_sounds == true)
{
     //Generates an executable that makes annoying beeping sounds
}
else
{
    //Generates an executable that doesn't make annoying beeping sounds
}

基本上,我希望我的程序生成/创建另一个程序。我见过/使用过许多这样做的程序。我在网上到处搜索,什么也找不到。感谢所有的帮助。(从我的程序中创建一个程序)。

您需要执行以下操作:

  • 根据用户输入,生成自定义程序的代码
  • 将代码编译成可执行文件

  • 创建源文件后,尝试使用basic
    system
    调用调用调用编译器

    您可以使用
    stdio.h


    安全注意:已知
    系统
    功能存在危险。当有疑问时,调用类似于
    exec
    的函数来调用编译器。虽然
    exec
    会擦除当前正在运行的进程,但是如果您想在编译完成后继续执行操作,则应该使用
    fork
    ,然后调用
    exec

    那么您想创建一个编译器吗?下面的这个问题包含一个完整的资源列表,可以帮助您开始


    理论上,根据用户输入的内容,您可以让C代码在
    if
    语句中生成C代码。然而,这将是相当困难的


    我认为最好的方法是制作一个独立的C引擎,它只实现任何生成的程序都可以执行的功能(例如,播放参数中给出的声音)。您试图编码的程序(不是引擎,而是带有
    if
    语句的程序,我们称之为“主程序”)必须生成实现算法的代码,该算法将选择调用引擎的哪个函数以及何时调用。生成的代码应该用lua这样的脚本语言编写,因为in比C更容易生成脚本代码。因此,引擎应该设计为能够与lua脚本通信。当用户单击主程序的最后一个“生成程序”按钮时,主程序调用gcc来编译引擎和Lua脚本,以生成用户试图创建的程序。这很长,但我认为这是正确的方法。

    谢谢,这正是我想要做的。但是,我如何从我的应用程序中编译这个程序(生成的程序)?创建一个新的进程来运行编译器,将生成的程序作为其输入。谢谢,这应该可以正常工作。还有其他的方法吗?尽管如此,这应该是可行的。编辑:不用客气,谢谢@孜孜不倦除非您想自己实现编译例程,这需要大量的工作,或者您想调用编译器的私有API,这是非常不可靠的,因为API可以在不通知的情况下更改,否则最好只创建一个单独的进程。