如何在C中编译C程序?

时间:2011-02-24 03:58:12

标签: c

我在c中创建一个可以生成另一个c代码的程序。

如何使用第一个程序在第二个程序生成后立即编译并运行第二个程序?

3 个答案:

答案 0 :(得分:6)

一种方法是使用system()调用...

system("cl generated_file.c -o gen_exe") ;
system("./gen.exe");

system("gcc generated_file.c -o gen.exe");
system("./gen.exe");

或者您使用simle批处理或脚本或makefile来执行此操作

答案 1 :(得分:2)

我将在一个中做两个笔记:

首先,如果您有一个生成源代码的程序,为什么不使用普通的构建系统来处理这个问题呢?对于基于Make的构建系统,它看起来像这样:

second_program : second.c
    $(CC) $(CFLAGS) -o $@ $<

second.c : first_program
    ./first_program $(GENERATION_OPTIONS) > $@

first_program : $(LIST_OF_SOURCE_FILES)
    $(CC) $(CFLAGS) -o $@ $<

这更符合Unix哲学,而不是让第一个程序运行外部命令,这总是很好。

其次,您是否希望动态生成和执行第二个程序?即生成的代码是否依赖于第一个程序的某些动态状态,第二个程序的输出是否与第一个程序相关? 如果是这样,也许你应该看看你可以用库做什么来运行一些脚本语言,如LUAECMAScript。 (对于你所询问的情况,这可能有点过于先进,但知道有哪些选项总是很好。)

答案 2 :(得分:1)

您需要在您的应用中嵌入一个编译器(例如libtcclcc)或通过命令行调用一个编译器,但这需要检测用户安装的内容或者至少包括与您的应用程序的额外二进制文件