簡體   English   中英

在c ++源代碼中調用g ++

[英]Calling g++ in c++ source code

所以我已經搜索了所有可能的東西。 我正在使用C ++編寫自己的IDE,我正試圖找到一種方法來調用g ++或任何其他編譯器。 到目前為止我唯一想到的方法就是這樣:

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

你們知道或者可以想到用c ++做任何其他方法嗎?

最好的問候,ZéPedro

最“原始”的方式是使用您的操作系統的API:POSIX上的exec()系列 ,Windows上的CreateProcess[Ex]

通常,您也可以通過獨立於平台的抽象來使用它。 很可能你用於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文件?

系統函數調用是阻塞調用。 如果我的理解是正確的,它通常會等待回電。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM