在运行时期间编译c源代码中的另一个源代码

时间:2015-06-23 17:58:14

标签: c

这是一个非常奇怪的问题,但我仍然很好奇。我有一个源代码a.c,其中有一些魔术代码可以在同一目录中编译不同的代码b.c。因此,在运行时期间,b.c被编译并可能已运行。

我为这个问题很难道歉,但这是否已经完成了之前的事情?如果没有,有没有办法这样做?

2 个答案:

答案 0 :(得分:2)

<强>交流转换器

#include <stdio.h>

int main() {
    puts("a: compiling b.c");
    system("gcc -o b b.c");
    puts("a: executing b");
    system("./b");
    puts("a: done");
    return 0;
}

<强> b.c

#include <stdio.h>

int main() {
    puts("b: hello world");
    return 0;
}

<强>输出

a: compiling b.c
a: executing b
b: hello world
a: done

答案 1 :(得分:1)

是的,您可以forkexec运行编译器,然后再次forkexec来运行已编译的代码。另一种选择是使用system函数来运行编译器,然后再次调用system来运行已编译的代码。