从另一个程序创建程序?

时间:2014-01-11 17:41:13

标签: 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
}

基本上我希望我的程序生成/创建另一个程序。我已经看过/使用过很多这样做的程序。我在互联网上搜索过,找不到任何东西。所有帮助表示赞赏。 (在我的程序中创建一个程序)。

4 个答案:

答案 0 :(得分:1)

在创建源文件后,尝试使用基本system调用来调用编译器。

您可以使用stdio.h

中的实用程序创建源文件

安全提示:已知system功能很危险。如有疑问,请调用exec之类的函数来调用编译器。虽然exec会删除当前正在运行的进程,但是如果要在编译完成后继续执行操作,则应使用fork然后调用exec

答案 1 :(得分:1)

所以你想创建一个编译器?下面的这个问题包含一整套资源,可以帮助您入门。

Learning to write a compiler

答案 2 :(得分:0)

您需要执行以下操作:

  1. 根据用户输入,生成自定义程序的代码。
  2. 将该代码编译为可执行文件。

答案 3 :(得分:0)

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

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