在 c++ 源代码中调用 g++

Calling g++ in c++ source code

本文关键字:调用 g++ 源代码 c++      更新时间:2023-10-16

所以我已经搜索了我能拥有的一切。我正在使用C++编写自己的IDE,并且正在尝试找到一种调用g ++或任何其他编译器的方法。到目前为止,我想到的唯一方法是这样的:

int main(){
   system("g++ --flags");
   return 0;
}

你们知道或能想到任何其他方法在 c++ 中做到这一点吗?

此致敬意泽·佩德罗

最"原始"的方式是使用操作系统的API:POSIX上的exec()系列,CreateProcess[Ex] Windows上的API。

通常,您也可以通过独立于平台的抽象来使用它。您用于 GUI 的工具包(无论它是什么(很可能已经具有进程启动功能作为其 API 的一部分。例如,Qt有QProcess,wxWidgets有wxExecute()

如果您尝试保留命令的输出,则应使用 popen。 它的使用类似于打开文件,也可以这样使用

FILE *compiler = popen("g++ --flags", "r");

然后使用 fgetsfscanfstdio命令。 如果您的目标是 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';
}

你的方式会很好用。 如果您有兴趣,这里有一些其他方法可以做到这一点:如何在c ++程序中调用.exe文件?

系统函数调用是阻塞调用。如果我的理解正确,它通常会等待呼叫返回。