2013-07-30 9 views
10

Der Code ist ganz einfach:Wie kompiliere ich Code von stdin?

test$ cat test.cpp 

int main() 
{ 
} 

Gibt es eine Möglichkeit, den Code zu kompilieren, die aus einer Standardausgabe kommt?

Ich habe dies versucht:

cat test.cpp | g++ - 

und einige Variationen, aber keine ausführbare Datei erzeugt.


Nur einige Klarstellungen. Ich habe ein Programm, das eine Datei vorverarbeitet und eine andere Datei erzeugt, die ich kompilieren möchte. Ich dachte darüber nach, diese Zwischendatei nicht zu erstellen, sondern stattdessen die Objektdatei direkt zu erzeugen.

+2

Das ist stdin, nicht stdout. –

+1

Warum sind die Leute so daran interessiert, aus der Standardeingabe zu kompilieren? Ist es so schwer, eine Datei zu generieren und diese zu kompilieren? –

+1

@ DavidRodríguez-dribeas Mein Motto ist: überspringen Sie einen mittleren Mann :) –

Antwort

12

Der Compiler wahrscheinlich gesagt, Sie haben würde:

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

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

Ja, es hat mir gesagt, aber es hat nicht gesagt, C++ danach zu setzen. Nach dem Hinzufügen von C++ funktioniert es –

+2

@ BЈовић In diesen Fällen sollen Sie die Dokumentation der bestimmten Compiler-Flag lesen, die Sie verwenden werden. Es ist dokumentiert, dass '-x' die Sprache als Argument benötigt. –

+0

@ H2CO3 Die Fehlermeldung ist überhaupt nicht hilfreich (wenn Sie die Sprache nicht angeben). Auch das "-" muss am Ende sein. Versuchen Sie, solche Details in g ++ Dokumentation zu finden –

2

Haben Sie dies versuchen, versuchen?

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

Ich habe es gerade unter Cygwin versucht und hatte kein Problem.

+0

duh ... die Zeit, um es zu versuchen wurde bereits beantwortet. +1 Devnull :) – Shlublu

Verwandte Themen