On peut dans un premier fichier source définire une fonction qui sera appelée par un autre fichier source. Par exemple, le fichier cercle.c
contient simplement la définition d'une fonction utilisée par le fichier aire.c
. Voici le fichier cercle.c :
/* * cercle.c - Exemple de fichier source en C qui, compile avec * un autre source (aire.c), donne l'executable aire * */ #include <math.h> #define SQUARE(x) ((x)*(x)) /* definition de la fonction "aire_du_cercle" utilisee par aire.c */ double aire_du_cercle (double r) { return M_PI * SQUARE (r); }
et voici le fichier aire.c :
/* * aire.c - Exemple de fichier source en C qui, compile avec * un autre source (cercle.c), donne l'executable aire * */ #include <stdio.h> #include <stdlib.h> /* * fonction "aire_du_cercle" definie dans un autre fichier source * (ici cercle.c). * */ double aire_du_cercle (double r); void main (int argc, char **argv) { double aire, rayon; if (argc < 2) { printf ("Usage : %s rayon\n", argv[0]); exit (1); } else { rayon = atof (argv[1]); aire = aire_du_cercle (rayon); printf ("Aire du cercle de rayon %f = %f\n", rayon, aire); } }
Pour compiler un tel programme, il faut d'abord compiler chaque source avec l'option -c (le fichier obtenu sera un fichier objet, avec l'extension .o), puis compiler les deux fichiers objets pour faire l'exécutable aire
:
gcc -c aire.c gcc -c cercle.c gcc aire.o cercle.o -o aire
Pour compiler en utilisant des bibliothèques (personnelles ou non), voir section 8.2. Pour compiler en utilisant des bibliothèques partagées, voir section 8.5.