2010-01-18 4 views
4

Действительно, вопрос о стене здесь, но есть ли способ скомпилировать строку кода C в GCC без какого-либо носителя для хранения этой строки (например, исходного файла)?Скомпилировать строку кода C

Что-то вдоль линий:

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

ощущению действительно грязная, но это было бы очень хорошо, если бы был какой-нибудь простой способ сделать такого рода вещи.

+0

Возможный дубликат [Можно ли получить GCC для чтения из pipe?] (http://stackoverflow.com/questions/1003644/is-it-possible-to-get-gcc-to-read-from-a-pipe) –

ответ

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

Это выглядит немного проще в использовании. Спасибо, спасибо! –

5

Признаюсь, иногда выделяя код и использование:

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

Те же работы с "-xc" для C.

Смежные вопросы