2010-01-18 70 views
4

真的離開了這裏的牆問題,但是有沒有辦法在GCC中編譯一串C代碼而沒有任何介質來保存該字符串(例如源文件)?編譯C代碼字符串

東西線沿線的:

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

感覺很乾淨,但如果有一些簡單的方法來做到這一點類型的東西那將是非常好的。

+0

的[可能的複製是否有可能獲得GCC從讀管道?](http://stackoverflow.com/questions/1003644/is-it-possible-to-get-gcc-to-read-from-a-pipe) – 2015-10-03 16:44:19

回答

7

如果使用-作爲輸入文件命令行,gcc從標準輸入讀取。由於沒有文件擴展名GCC可以用它來找出應該被編譯的語言,它具有與-x標誌指定:

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

這看起來更容易使用。也謝謝! – 2010-01-18 04:49:14

5

我承認有時突出的代碼,並使用:

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

同樣的作品有 「-xc」 爲C.