[英]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");
然后使用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';
}
你的方式會很好。 如果您感興趣,可以使用以下其他方法: 如何在c ++程序中調用.exe文件?
系統函數調用是阻塞調用。 如果我的理解是正確的,它通常會等待回電。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.