29 votes

Comment compiler du code à partir de stdin?

Le code est assez simple :

test$ cat test.cpp

int main()
{
}

Y a-t-il un moyen de compiler le code qui provient d'une sortie standard ?

J'ai essayé ceci :

cat test.cpp | g++ -

et quelques variations, mais aucune n'a produit d'exécutable.


Juste quelques clarifications. J'ai un programme qui prétraite un fichier, et produit un autre fichier que je veux compiler. J'ai pensé à ne pas créer ce fichier intermédiaire, mais plutôt produire directement le fichier objet.

2 votes

C'est stdin, pas stdout.

1 votes

Pourquoi les gens sont-ils si intéressés par la compilation à partir de l'entrée standard ? Est-ce si difficile de générer un fichier et de le compiler ?

3 votes

@DavidRodríguez-dribeas Mon slogan est : sauter un intermédiaire :)

48voto

devnull Points 45016

Le compilateur vous aurait probablement dit :

-E ou -x requis lorsque l'entrée provient de l'entrée standard

Essayer

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

4 votes

Oui, cela m'a dit, mais il n'a pas dit de mettre du c++ après. Après avoir ajouté du c++, cela fonctionne

3 votes

@B Dans ces cas, vous êtes censé lire la documentation du drapeau de compilateur particulier que vous utiliserez. -x est documenté comme exigeant le langage comme argument.

3 votes

@H2CO3 Le message d'erreur n'est pas du tout utile (si vous ne fournissez pas la langue). De plus, le ´-´ doit être à la fin. Essayez de trouver de tels détails dans la documentation de g++

2voto

Shlublu Points 6199

Avez-vous essayé cela ?

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

Je viens de l'essayer sous Cygwin et je n'ai eu aucun problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X