2010-01-18 5 views
4

Vraiment hors de la question de mur ici, mais est-il un moyen de compiler une chaîne de code C dans GCC sans aucun support pour contenir cette chaîne (par exemple un fichier source)?Compiler la chaîne de code C

Quelque chose le long des lignes de:

$ gcc "#include <stdio.h> int main(void){ printf('hello world'); return 0;}" -o test 

sent vraiment sale, mais ce serait vraiment bien s'il y avait une façon simple de faire ce genre de chose.

+0

double possible de [Est-il possible d'obtenir gcc lire une pipe?] (http://stackoverflow.com/questions/1003644/is-it-possible-to-get-gcc-to-read-from-a-pipe) –

Répondre

7

Si vous utilisez - comme fichier d'entrée dans la ligne de commande, gcc lit à partir de l'entrée standard. Comme il n'y a pas gcc extension de nom de fichier pourrait utiliser pour trouver la langue qui doit être compilé, il doit être spécifié avec le -x drapeau:

$ gcc -x c -o tst - <<EOF 
> #include <stdio.h> 
> int main(void) { 
> printf("Hello world\n"); 
> } 
> EOF 
$ ./tst 
Hello world 
+0

Cela semble un peu plus facile à utiliser. Merci aussi! –

5

avouerai-je mettre en évidence parfois du code et en utilisant:

(cat preamble.hpp; xsel) | g++ -x c++ - && ./a.out 

Les mêmes œuvres avec "-xc" pour C.