Partager via


Phases de traduction

Les programmes C et C++ se composent d'un ou plusieurs fichiers sources, qui contient une partie du texte de programme.Un fichier source, avec ses fichiers Include (fichiers inclus à l'aide de la directive de préprocesseur d' #include ) mais sans des sections de code supprimées par des directives de compilation conditionnelle telles que #if, est appelé une « unité de traduction. »

Des fichiers sources peuvent être traduits à différents moments - en fait, il est courant de traduction uniquement les fichiers obsolètes.Les unités de traduction traduites peuvent être gérées dans les fichiers objets ou des bibliothèques distincts de code objet.Ces unités de traduction distinctes et traduites sont ensuite liées pour former un programme exécutable ou une bibliothèque de liens (DLL) dynamiques.Pour plus d'informations sur les fichiers qui peuvent être utilisés comme entrée de l'éditeur de liens, consultez Fichiers d'entrée LINK.

Les unités de traduction peuvent communiquer à l'aide de :

  • Appels aux fonctions qui ont une liaison externe.

  • Appels aux fonctions membres de classe qui ont une liaison externe.

  • Dirigez la modification des objets qui ont une liaison externe.

  • modification directe des fichiers.

  • Communication entre processus (pour les applications Microsoft Windows uniquement).

La liste suivante décrit les phases lesquelles le compilateur traduit les fichiers :

  • Mappage de caractère
    Les caractères dans le fichier source sont mappés à la représentation interne source.Des séquences de Trigraphe sont converties à la représentation interne à un caractère dans cette phase.

  • Ajout de ligne
    Toutes les lignes se terminant par une barre oblique inverse (\) et est immédiatement suivi d'un caractère de saut de ligne sont jointes à la ligne suivante le fichier source forme les Lignes logiques des Lignes physiques.À moins qu'il soit vide, un fichier source doit se terminer par un caractère de saut de ligne qui n'est pas précédé d'une barre oblique inverse.

  • segmentation du texte en unités lexicales
    Le fichier source est arrêté en jetons et des espaces blancs de prétraitement.Les commentaires dans le fichier source sont remplacés par un espace chaque.Les caractères de saut de ligne sont conservés.

  • Prétraitement
    Les directives de prétraitement sont exécutées et les macros sont développées dans le fichier source.L'instruction d' #include appelle la traduction commençant par les trois étapes précédentes de traduction sur tout texte inline.

  • Mappage des jeux de caractères
    Tous les membres et séquences d'échappement de jeu de caractères de source sont convertis en leurs équivalents dans le jeu de caractères d'exécution.Pour Microsoft C et C++, la source et les jeux de caractères d'exécution sont en ASCII.

  • Concaténation de chaînes
    tous les littéraux adjacents de chaîne et de large-chaîne sont concaténés.Par exemple, "String " "concatenation"devient "String concatenation".

  • Traduction
    Tous les jetons sont analysés syntaxiquement et sémantiquement ; ces jetons sont convertis en code objet.

  • liaison
    toutes les références externes sont résolues pour créer un programme exécutable ou une bibliothèque de liens dynamiques.

Le compilateur génère des avertissements ou des erreurs lors de les phases de traduction lesquelles il rencontre des erreurs de syntaxe.

L'éditeur de liens résout toutes les références externes et crée un programme exécutable ou une DLL en combinant un ou plusieurs unités de traduction séparément traitées avec les bibliothèques standard.

Voir aussi

Référence

Préprocesseur