Quick and ugly alternative is chmod+x and add something like this to the top of your file:
//$(which gcc) $0 -o a.out; ./a.out $@; rm a.out; exit //$(which gcc) $0 -o a.out; ./a.out $@; rm a.out; exitDoes not work in the spirit of my script though, since you would still need to add headers and main():
//$(which gcc) $0 -o a.out; ./a.out $@; rm a.out; exit
int i = 10;
printf ("%d\n", i);
./snip.c:3:9: error: expected declaration specifiers or ‘...’ before string constant
printf ("%d\n", i);