2011-02-24 113 views
0

我正在制作一个c程序,可以产生另一个c代码。如何在C中编译C程序?

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

+3

使用'system'来调用你的编译器并运行结果。 – chrisaycock 2011-02-24 03:59:49

+0

是的,除非你打算在那里编写一个lil编译器...... – Orbit 2011-02-24 04:01:51

回答

6

的一种方法是使用system()电话...

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

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

或者你使用笑着批处理或脚本或生成文件来做到这一点

+0

我试过使用第二个解决方案,但命令窗口告诉gcc是不可识别的,尽管我已经安装了minGW,任何解决方案? – Ardy 2011-02-24 04:50:34

+0

在破坏程序之前,你应该使用'EXPORT PATH'。 – 2011-02-24 05:44:22

1

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

2

我会在一两个音符:

首先,如果你有一个生成源代码的一个节目,为什么不使用普通的构建系统来处理这个的吗?对于制作为基础构建系统可能是这个样子:

second_program : second.c 
    $(CC) $(CFLAGS) -o [email protected] $< 

second.c : first_program 
    ./first_program $(GENERATION_OPTIONS) > [email protected] 

first_program : $(LIST_OF_SOURCE_FILES) 
    $(CC) $(CFLAGS) -o [email protected] $< 

这将是更符合Unix哲学比具有第一程序运行外部命令,这总是好的。

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