2013-07-30 29 views
10

的代碼非常簡單:如何從stdin編譯代碼?

test$ cat test.cpp 

int main() 
{ 
} 

有沒有辦法來編譯從標準輸出來的代碼?

我已經試過這樣:

cat test.cpp | g++ - 

和一些變化,但沒有產生可執行文件。


只是一些澄清。我有一個預處理文件的程序,並生成了我想要編譯的另一個文件。我想過不要創建這個中間文件,而是直接生成目標文件。

+2

這是標準輸入,而不是標準輸出。 –

+1

爲什麼人們對標準輸入的編譯如此感興趣?難以生成一個文件並編譯它嗎? –

+1

@DavidRodríguez-dribeas我的座右銘是:跳過一箇中間人:) –

回答

12

,編譯器將可能已經告訴你:

-E or -x required when input is from standard input 

嘗試

cat test.cpp | g++ -x c++ - 
+0

是的,它告訴我,但它沒有告訴把C++放在後面。在添加C++之後,它可以工作 –

+2

@BЈовић在這些情況下,您應該閱讀將要使用的特定編譯器標誌的文檔。記錄「-x」以要求語言作爲其參數。 – 2013-07-30 13:29:10

+0

@ H2CO3錯誤信息根本沒有幫助(如果您不提供該語言)。另外,' - '必須在最後。嘗試在g ++文檔 –

2

你試試這個?

$ cat tst.cpp | g++ -x c++ - 

我剛剛在Cygwin下試過了,沒有問題。

+0

中找到此類詳細信息...嘗試它的時間已被響應。 +1 devnull :) – Shlublu