Скомпилируйте строку кода C - PullRequest
6 голосов
/ 18 января 2010

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

Что-то вроде:

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

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

Ответы [ 2 ]

8 голосов
/ 18 января 2010

Если вы используете - в качестве входного файла в командной строке, gcc читает из стандартного ввода. Поскольку нет расширения имени файла, которое gcc может использовать для определения языка, который должен быть скомпилирован, его необходимо указать с флагом -x:

$ gcc -x c -o tst - <<EOF
> #include <stdio.h>
> int main(void) {
>   printf("Hello world\n");
> }
> EOF
$ ./tst
Hello world
6 голосов
/ 18 января 2010

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

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

То же самое работает с "-x c" для C.

...