Trousse de survie, le compilateur Borland

Ce document est disponible à l'URL http://www.enseignement.polytechnique.fr/profs/informatique/Luc.Maranget/TC/X.97/docs/bc5.html

1  Quelques notions de base

Vous écrivez votre programme en C, dans un fichier source. Généralement, les fichiers source C, ont l'extension .c. Soit demo.c, par exemple.

Le compilateur procède ensuite en deux étapes principales. Il traduit d'abord votre fichier en langage machine qui porte l'extension .obj en Borland C++, soit par exemples demo.obj. Un tel fichier est un fichier objet.

Les fichiers objets sont ensuite transformés en exécutables (extension .exe). Cette dernière opération s'appelle l'édition de liens (linking en anglais). En effet, votre programme peut faire appel à certaines fonctions qu'il ne définit pas, comme les fonctions de la librairie standard (entrées/sorties, opérations arithmétiques un peu complexes...) ou les fonctions graphiques de la MacLib. L'édition de lien trouve ces fonctions dans les librairies du système et insère leur code dans l'exécutable.

2  Compilation et édition de liens avec Borland C++

2.1  Création d'un projet

En Borland C++, les règles de production d'un exécutable sont définies dans un fichier projet (extension .ide). Les projets que nous utiliserons en cours sont tous du même type. Voici comment les créer
  1. Vous positionner dans votre répertoire de travail (disons C:\TD\) et créer un nouveau dossier (menu Fichier de la fenêtre du répertoire TD, sélection Nouveau ...Dossier). Le nommer Essai, par exemple. Vous avez créé un nouveau dossier que l'on pourra référencer par le nom C:\TD\Essai.
  2. Lancer Borland C++, par exemple par le sous-menu Programmes, à gauche de la barre de menus en bas de l'écran.
  3. Dans le menu File, sélectionner New ...Project. Une fenêtre de dialogue apparaît.
  4. La fenêtre permet de définir certaines caractéristiques du projet. Il sera impossible de les changer toutes par la suite, il convient donc d'être rigoureux.
    1. Changer le nom du projet, dans la première case. Votre projet est demo, dans le répertoire que vous venez de créer. Soit C:\TD\Essai\demo.ide.
    2. Le type du projet (Target type) est Application. Sélectionner ce type.
    3. La plate-forme est WIN 32 (ce paramètre est normalement déjà configuré correctement).
    4. Sélectionner le mode Console, en bas à gauche, dans la case Target model.
    5. Cliquer sur Advanced dans la barre de boutons à droite (l'icône est assez remarquable). Une nouvelle fenêtre apparaît.
      1. Dans Initial node, sélectionner .c node.
      2. Des-sélectionner les case .rc et .def.
      3. Cliquer sur Ok.
    6. Cliquer sur Ok.
Une nouvelle fenêtre apparaît, avec un petit arbre qui représente les dépendances pour construire l'exécutable demo.exe. On peut éditer les noeuds de cet arbre, en utilisant le menu contextuel qui apparaît en cliquant (bouton de droite) sur ces noeuds, mais c'est inutile si vous avez bien suivi les étapes ci-dessus.

Enfin, on peut très bien, pour démarrer un nouvel exercice, copier un projet déjà existant au lieu d'en créer un nouveau de toutes pièces. On peut alors lancer Borland C++ en double-cliquant sur l'icône du projet (elle ressemble à un jeu de construction) et seulement sur celle-ci. Il faut ensuite changer quelques attributs, comme le nom du projet et le nom du fichier source. Attention tout de même, le projet copié doit être de type Application et de mode Console.

2.2  Compilation d'un programme

Créer le fichier source demo.c. Pour cela, on peut double-cliquer avec le bouton de gauche sur demo.c dans l'arbre du projet. Une fenêtre d'édition va s'ouvrir. Rentrer le texte du programme, par exemple :
#include <stdio.h> /* définitions de types pour les entrées/sorties */

/*
  main est la fonction principale,
  elle ne prend pas d'argument et ne retourne rien
*/

void main(void)
{  /* début de main */
  printf("Coucou !!!\n"); /* afficher une chaîne sur la console */
  getchar();              /* attendre une entrée pour terminer */
}  /* fin de main */
(les commentaires sont délimités par /*...*/.)

Au cours de l'écriture du programme, il est vivement recommandé de sauver le fichier de temps en temps (menu File, sélection Save). Si vous oubliez de le faire, un plantage de votre machine entraînera la disparition de votre oeuvre...

La production de l'exécutable est déclenchée par la sélection Make all du menu Project. Diverses boites de dialogue apparaissent, ainsi que surtout une fenêtre de messages. Cette fenêtre annonce les phases de compilation et d'édition de liens et les erreurs. Il y a deux types d'erreurs. Les messages précédés d'un point d'exclamation jaune sont des avertissements (par exemple, une variable est déclarée et n'est pas utilisée), ils n'empêchent pas la production de l'exécutable. Les messages précédés d'un point d'exclamation rouge sont des erreurs qu'il faut corriger. En double-cliquant sur le message d'erreur, on se retrouve positionné sur la ligne de source qui a provoqué l'erreur.

Les erreurs qui surviennent pendant la compilation, sont généralement des erreurs dans l'écriture du programme, elles se réparent en éditant le fichier source.

Les erreurs qui surviennent pendant l'édition de liens proviennent le plus souvent d'une faute d'orthographe dans le nom d'une fonction de librairie (print au lieu de printf, par exemple). Elles se traduisent par un message Unresolve external.

Une mauvaise configuration de votre projet ou de votre compilateur pourra également entraîner ce type d'erreurs, au moment ou le compilateur ou l'éditeur de liens tentent d'accéder aux fonctions de librairie. Vos aurez alors droit à des erreurs Cannot find include file ou Unresolve external. En particulier, cela arrivera si vous n'avez pas de projet actif.

3  Exécution

On lance l'exécution du programme par l'icône éclair de la barre d'icônes de Borland C++, on peut aussi passer par la sélection Run du menu Debugger. (Attention : si l'exécutable n'est plus à jour, une recompilation sera lancée.) Une fenêtre console apparaît. Cette fenêtre se fermera automatiquement quand le programme se terminera. Ainsi, pour éviter de se recuire à l'apparition fugace d'une fenêtre, le programme demo comprend un appel à getchar qui attend que l'utilisateur frappe enter au clavier avant de revenir.

3.1  C'est comment qu'on freine ?

On peut interrompre l'exécution en cours par l'icône rouge qui ressemble à une patte, le contrôle passe alors au debugger. On relance l'exécution par Run (icône éclair). On peut aussi terminer définitivement l'exécution en cours en fermant la fenêtre console en cliquant sur la croix en haut et à droite.

3.2  Principales fonctions du debugger

3.3  Diverses options

Borland C++ est une véritable usine à gaz. Il doit pouvoir tout faire, dès lors, lorsque l'on exploite qu'une infime sous-partie de ses fonctionalitées, certaines particularités peuvent être gênantes.

3.3.1  Mais où va-t-il donc chercher ses fichiers ?


Ce document a été traduit de LATEX par HEVEA.