Messages d’erreur

Le texte que le programmeur tape est appelé texte source du programme ; le code compilé obtenu est l’exécutable. Pour que la compilation ne soit pas trop lente, il faut aussi qu’elle ne soit pas trop complexe. Par conséquent, le programmeur est tenu de respecter un certain nombre de conventions qui ont pour but de faciliter cette compilation, et aussi d’éviter des erreurs.

Lorsque ces conventions ne sont pas respectées, le compilateur suppose que le programmeur s’est trompé. Il affiche alors un message d’erreur, qui peut être de trois types.

Un message d’attention Warning signale simplement une bizarrerie dans le programme qui ne l’empêche pas cependant d’être compilé et exécuté ; c’est le cas par exemple lorsqu’on déclare une variable sans l’utiliser : le compilateur affiche Warning : xxx declared but never used (xxx déclarée mais jamais utilisée), où xxx désigne le nom de la variable en question (en fait le message est un peu plus long, car le compilateur précise le numéro de ligne et le nom de la fonction courante). De tels messages sont peut-être des erreurs du programmeur, ou peut-être pas. Ils n’empêchent nullement le programme de fonctionner, et peuvent donc être ignorés, bien qu’il soit généralement préférable d’y prêter attention.

Un message Error signale une erreur qui empêche le programme de fonctionner. C++ continue cependant la compilation (si les options par défaut sont choisies) jusqu’à la fin du fichier, afin de signaler par la même occasion les autres erreurs. Cependant, la première erreur peut en provoquer toute une série d’autres. Ainsi un point-virgule mal placé (voir exemple ci-après) peut engendrer des dizaines de messages d’erreur successifs, car il ôte au compilateur ses points de repère, lui faisant ainsi « perdre les pédales ». De telles erreurs de syntaxe sont fréquentes, surtout pour un débutant, ainsi que les erreurs en frappant un nom de variable. Elles doivent être corrigées impérativement pour que le programme puisse fonctionner.

Dans certains cas rares, il arrive qu’une erreur fatale (Fatal error) se produise en cours de compilation ; celle-ci s’arrête alors immédiatement. C’est le cas notamment des débordements de mémoire (Fatal error : out of memory).

Il est important de savoir que les messages d’erreur ne sont pas toujours ceux attendus. En effet, le compilateur signale le premier terme qui l’empêche d’accepter le texte, mais il se peut que l’erreur soit avant. Par exemple, le code suivant :

int fonction(void);        // erreur ici          {              // texte de la fonction...

provoque l’arrêt du compilateur sur la ligne contenant l’accolade ouvrante {, avec le message Error : declaration was expected, c’est-à-dire une déclaration était attendue. En effet, à cette étape c’est ce qui devrait suivre du point de vue du compilateur. Mais en réalité, il ne fallait pas mettre de point-virgule à la fin de la ligne précédente (voir la différence entre déclaration et définition de fonction plus loin).

Précédent Précédent Sommaire Sommaire Suivant Suivant