所以我已经搜索了所有可能的东西。我正在使用C ++编写自己的IDE,我正试图找到一种方法来调用g ++或任何其他编译器。到目前为止我唯一想到的方法就是这样:
int main(){
system("g++ --flags");
return 0;
}
你们是否知道或者可以想到用c ++做其他任何方法?
祝你好运, ZéPedro
答案 0 :(得分:2)
最“原始”的方式是使用您的操作系统API:POSIX上的exec()
family,Windows上的CreateProcess[Ex]
。
通常,您也可以通过独立于平台的抽象来使用它。很可能你用于GUI的工具包(无论它是什么)已经将流程启动功能作为其API的一部分。例如,Qt有QProcess
,wxWidgets有wxExecute()
。
答案 1 :(得分:2)
如果您尝试保留命令的输出,则应使用popen。它的用法类似于打开一个文件,它也可以这样使用
FILE *compiler = popen("g++ --flags", "r");
然后使用fgets
,fscanf
等stdio
命令。如果您的目标是linux,这将有用。
这是一个(相当)更完整的例子
#include <cstdio>
#include <iostream>
int main() {
FILE *compiler = popen("g++ -Wall f.cpp -std=c++11", "r");
char c;
while (( c = std::fgetc(compiler)) != EOF) {
std::cout << c;
}
std::cout << '\n';
}
答案 2 :(得分:1)
你的方式会很好。如果您有兴趣,可以采取以下其他方法:how to call .exe file within c++ program?
答案 3 :(得分:0)
系统函数调用是阻塞调用。如果我的理解是正确的,它通常会等待回电。