tags:

views:

144

answers:

3

Really off the wall question here, but is there a way to compile a string of C code in GCC without any medium to hold that string (eg. a source file)?

Something along the lines of:

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

Feels really dirty, but it would be really nice if there was some simple way to do that type of thing.

+4  A: 

http://gcc.gnu.org/ml/gcc-help/2005-12/msg00130.html

taspeotis
this example pipes the string to gcc. nice!
Aran Mulholland
that is sexy. Thank you!
Josh Sandlin
+4  A: 

I confess to sometimes highlighting code and using:

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

The same works with "-x c" for C.

Roger Pate
+4  A: 

If you use - as the input file in the command line, gcc reads from standard input. Since there is no file name extension gcc could use to find out the language that should be compiled, it has to be specified with the -x flag:

$ gcc -x c -o tst - <<EOF
> #include <stdio.h>
> int main(void) {
>   printf("Hello world\n");
> }
> EOF
$ ./tst
Hello world
sth
This looks a little easier to use. Thanks as well!
Josh Sandlin