Compiler du C à la volée Script C

Comment exécuter du code C comme un script ?

Deux solutions s’offrent à nous :
- Compiler à la volée (via un script shell),
- Ou utiliser le compilateur TCC.

Compilation à la volée

La première solution consite à encapsuler notre code C dans un script shell :

#! /bin/sh
cat <<-. >/tmp/cs.$$.c && gcc -Wall -o /tmp/cs.$$ /tmp/cs.$$.c && /tmp/cs.$$ $*; rm -f /tmp/cs.$$*

#include<stdio.h>

int main() {
   printf("Hello Word!\n");
   return 0;
}
.

Ou plus simplement :

#! /bin/sh
tail -n +3 $0 >/tmp/cs.$$.c && gcc -Wall -o /tmp/cs.$$ /tmp/cs.$$.c && /tmp/cs.$$ $*; rm -f /tmp/cs.$$*; exit

#include<stdio.h>

int main() {
   printf("Hello Word!\n");
   return 0;
}

Tiny CC

TCC est un tout petit compilateur C écrit par fabrice Bellard sous license GNU LGPL :
- Il permet de compiler et d’exécuter du code C n’importe où, par exemple d’une disquette de secours (environ 100 Kio pour l’exécutable TCC, incluant le préprocesseur et compilateur C, l’assembleur et l’éditeur de liens).
- Il génère du code x86 moyennement optimisé. Il compile, assemble et lie environ 9 fois plus vite que gcc.
- Le C ANSI et la norme ISO C99 sont bien supportés. De nombreuses extensions GNU C sont gérées.
- Il inclut un système de vérification de la mémoire et de ses accès. Ce système peut être mixé au code utilisateur.
- Il peut compiler et exécuter un source C sans édition de liens ou assemblage.
- La bibliothèque libtcc permet à n’importe quel programme de générer et exécuter dynamiquement du code.

Sous Linux, il peut être utilisé comme un interpréteur C : il suffit d’ajouter #!/usr/local/bin/tcc -run à la première ligne du source C, et de l’exécuter directement depuis la console.

Ex. :

#!/usr/local/bin/tcc -run

#include <stdio.h>

int main() {
   printf("Hello World\n");
   return 0;
}

P.-S.

Ne pas oublier le C Shell qui propose une syntaxe proche de celle du langage C...