Définition du préprocesseur

Dans les chapitres précédents, un programme simple vous a été présenté, il s'agit du programme suivant :

int main(void)
{

	printf("Ceci est votre premier programme");

}

Dans ce programme la fonction principale main() contient une fonction appelée printf() qui a pour but d'afficher le message « Ceci est votre premier programme ». En réalité le compilateur ne connaît pas la fonction printf() bien qu'il s'agisse d'une fonction standard du langage C. Cette fonction est effectivement stockée dans un fichier annexe, contenant une librairie de fonctions, appelé fichier de définition (éventuellement fichier d'en-tête ou fichier header), dont l'extension est .h.
Il s'agit donc de préciser au compilateur dans quel fichier se trouve la définition de la fonction printf()...

Celle-ci se trouve dans le fichier d'en-tête appelé stdio.h.
La désignation stdio signifie Standard Input Output (en français Entrées Sorties standard), c'est-à-dire que ce fichier contient la définition de nombreuses fonctions permettant l'entrée (saisie au clavier, ...) et la sortie (affichage, sortie dans un fichier, ...) de données, dont la fonction printf() fait partie.

L'incorporation de la déclaration de la fonction printf() se fait au moyen de l'instruction #include (que l'on place en début de fichier) suivie des balises < et > contenant le nom de fichier contenant la définition de la fonction. La déclaration include doit se trouver avant toute utilisation des méthodes déclarées, sinon le compilateur générera au minimum un warning.
Le programme ci-dessus pour pouvoir être compilé doit donc s'écrire :

#include <stdio.h>

int main(void)
{

	printf("Ceci est votre premier programme");

}

Le fichier est maintenant apte à être compilé. Il existe d'autres commandes du préprocesseur qui seront détaillées dans ce cours.

Nota Les instructions dédiées au préprocesseur ne se terminent pas par un point-virgule !

Phases de compilation

La compilation se fait généralement en plusieurs phases :

  • le compilateur transforme le code source en code objet, et le sauvegarde dans un fichier objet, c'est-à-dire qu'il traduit le fichier source en langage machine (certains compilateurs créent aussi un fichier en assembleur, un langage proche du langage machine car possédant des fonctions très simples, mais lisible).
  • le compilateur fait ensuite appel à un éditeur de liens (en anglais linker ou binder) qui permet d'intégrer dans le fichier final tous les éléments annexes (fonctions ou librairies) auquel le programme fait référence mais qui ne sont pas stockés dans le fichier source.
    Puis il crée un fichier exécutable qui contient tout ce dont il a besoin pour fonctionner de façon autonome, le fichier ainsi créé possède l'extension .exe.

Dans le cas du langage C, une phase supplémentaire apparaît, il s'agit du traitement du fichier par le préprocesseur C, un programme permet d'inclure dans le fichier source les éléments référencés par les instructions situées au début du fichier source (instructions précédées du caractère #). C'est donc le préprocesseur qui ajoutera dans le fichier source la définition de la fonction printf() qu'il sera allé chercher dans le fichier stdio.h grâce à l'instruction #include.

Les phases de compilation dans le cas d'un compilateur C sont donc les suivantes :



Dernière modification le mardi 14 octobre 2008 à 17:40:26.Ce document intitulé « Langage C - Notion de préprocesseur » issu de Comment Ça Marche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

Meilleures réponses pour « Langage C Notion de préprocesseur » dans :
Langage C++ - Les types de données Voir Les types de données Les données manipulées en langage C++, comme en langage C, sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître...
Langage C - Les types de données Voir Les types de données Les données manipulées en langage C sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître l'occupation mémoire (le...
Langage C - Les fonctions Voir La notion de fonction On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la fonction dans le corps du programme principal. Les fonctions permettent d'exécuter dans plusieurs parties du...
[Langage C] C/C++ Erreur de segmentation VoirQu'est ce qu'une erreur de segmentation Vous êtes en train de développer une application sous Linux en C/C++. Tout va bien, ça compile, les oiseaux chantent. Donc vous lancez votre application pour la tester. Et vous obtenez l'un de ces deux...
Les piles en langage C VoirLes piles Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la pile IV. Opérations sur les piles A. Initialisation B. Insertion d'un élément dans la pile C. Ôter un élément de la pile D. Affichage...
Les files en langage C VoirLes files - Premier Entré Premier Sorti Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la file IV. Opérations sur les files A. Initialisation B. Insertion d'un élément dans la file C. Oter un...
Langage C - Les variables VoirLe concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage C sont typées, c'est-à-dire que les données contenues dans...
Langage C - Les chaînes de caractères VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C, une chaîne...
Langage C++ - Les pointeurs VoirComme en langage C, le langage C++ permet d'utiliser des pointeurs pour manipuler des données, mais il introduit aussi le concept de référence, très pratique pour permettre la modification d'une donnée passée en paramètre d'une fonction. Définition...
Collection CommentÇaMarche.net