next up previous contents
Next: Quelques utilitaires ... utiles Up: Compilation séparée - édition Previous: La directive #include

Un exemple de programme comportant deux modules

Le programme présenté ici définit et teste des opérateurs élémentaires de calcul en nombres complexes. Un premier module contiendra la définition des fonctions AdditionComplexe et ProduitComplexe, et un second module contiendra un programme de test appelant ces deux fonctions.

Tout d'abord, la structure de données Complexe doit être définie et incluse dans les deux modules, ainsi que les prototypes des deux fonctions. Nous aurons donc un fichier que nous nommerons Complexe.h, dont le contenu est le suivant :

typedef struct {
  double Re;
  double Im;
} Complexe;

void AdditionComplexe(Complexe C1, Complexe C2, Complexe &Somme);
void ProduitComplexe(Complexe C1, Complexe C2, Complexe &Produit);

Le premier module, qui se trouve dans un fichier nommé ComplexOperation.C, se présente comme suit :

#include "Complexe.h"

void AdditionComplexe(Complexe C1, Complexe C2, Complexe &Somme)
{
  Somme.Re = C1.Re + C2.Re;
  Somme.Im = C1.Im + C2.Im;
}

void ProduitComplexe(Complexe C1, Complexe C2, Complexe &Produit)
{
  Produit.Re = (C1.Re * C2.Re) - (C1.Im * C2.Im);
  Produit.Im = (C1.Im * C2.Re) + (C2.Im * C1.Re);
}

Notez les guillemets utilisés dans la directive #include "Complexe.h", en remplacement des <> que vous avez l'habitude d'employer pour les bibliothèques standard. Ces guillemets indiquent que le fichier à inclure doit se trouver dans le répertoire courant.

Voici maintenant le module contenant le programme principal qui fait appel aux procédures du module ci-dessus, et qui se trouve dans le fichier nommé TestComplex.C :

#include <iostream.h>
#include "Complexe.h"

Complexe A, B;

void main()
{
  A.Re = 1;
  A.Im = 2;
  AdditionComplexe(A, A, B);
  ProduitComplexe(B, B, A);
  cout << "Re = " << A.Re << " Im = " << A.Im << "\n";
}

La compilation de fichiers ne devant pas immédiatement donner lieu à la production d'un exécutable s'effectue avec la directive -c :

        CC ComplexOperation.C -c
        CC TestComplex.C -c

Le compilateur produira s'il n'y a pas d'erreur des fichiers nommés dans ce cas ComplexOperation.o et TestComplex.o, non exécutables (o est une abréviation du mot objet, qui désigne un fichier de code compilé non exécutable).

Vous pourrez alors les lier pour en faire un seul exécutable en lançant l'éditeur de liens de la façon suivante :

	CC ComplexOperation.o TestComplex.o -o TestComp -lm

Notez qu'ici, la directive -lm n'est pas indispensable (nos programmes d'exemple ne font pas usage de fonctions de la bibliothèque mathématique). Néanmoins, c'est dans cette étape d'édition de liens qu'il faut l'inclure en cas de nécessité.



Michel COUPRIE
Fri Sep 13 09:59:33 METDST 1996