« Programmation C++/Compilation » : différence entre les versions

Contenu supprimé Contenu ajouté
Ajout de CLion. Liens vide pour les autres programmes non référencés
m Formatage, ajout de code
Ligne 12 :
La compilation passe par différentes phases, produisant ou non des fichiers intermédiaires :
* préprocessing : Le code source original est transformé en code source brut. Les commentaires sont enlevés et les directives de compilation commençant par <code>#</code> sont d'abord traités pour obtenir le code source brut ;
* compilation en fichier objet : les fichiers de code source brut sont transformés en un fichier dit objet, c'est-à-dire un fichier contenant du code machine ainsi que toutes les informations nécessaires pour l'étape suivante (édition des liens). Généralement, ces fichiers portent l'extension <code>.obj</code> ou <ttcode>.o</ttcode> ;
* édition de liens : dans cette phase, l'éditeur de liens (linker) s'occupe d'assembler les fichiers objet en une entité exécutable et doit pour ce faire résoudre toutes les adresses non encore résolues, tant des mémoires adressées que des appels de fonction. L'entité exécutable est généralement soit un exécutable, soit une bibliothèque dynamique (DLLs sous Windows et toutes les variantes, tels que objet COM, OCX, etc, et les .so sous Linux).
 
Ligne 22 :
Les fichiers sources d'un programme C++ portent souvent l'extension .cpp, .cxx, .cc, parfois .C et sont des fichiers textes lisibles par le programmeur.
=== Les fichiers d'en-tête ===
Les fichiers "entêtes" ("headers" en anglais), traditionnellement d'extension <ttcode>.h</ttcode> ou <ttcode>.hpp</ttcode> (mais la plupart des entêtes systèmes du C++ standard n'ont plus d'extension du tout), contiennent généralement les prototypes de différentes fonctions, structures et classes. Ces prototypes proviennent :
* des bibliothèques standards du C++ : tout compilateur C++ doit fournir ces fichiers ainsi que les fichiers objets contenant l'implémentation des bibliothèques standards (souvent liées par défaut) ;
* de bibliothèques non standards fournis par l'éditeur du compilateur ou de l'environnement de développement ;
Ligne 28 :
 
=== Les fichiers .cpp ===
Les fichiers <ttcode>.cpp</ttcode> (parfois <ttcode>.c</ttcode> ou <ttcode>.cc</ttcode>) contiennent la définition (l'implémentation) des différentes fonctions et méthodes définies dans les fichiers d'en-tête. La compilation des fichiers <ttcode>.cpp</ttcode> produit dans un premier temps des fichiers objets (extension <ttcode>.obj</ttcode> ou <ttcode>.o</ttcode> en général).
 
A noter que ces fichiers <ttcode>.cpp</ttcode> utilisent les fichiers d'en-tête. Ils les appellent en utilisant la syntaxe <ttcode>#include "nomdefichier"</ttcode> (nomdefichier comprenant l'extension, donc, souvent ".h"). Comme indiqué ci-dessus, ces fichiers d'en-tête seront donc inclus complètement par le préprocesseur à l'intérieur du code source brut.
 
== L'édition de liens (linking) ==