{C++} Question d'inclusion fichiers cpp

Fermé
playboy-1990 Messages postés 458 Date d'inscription samedi 27 mars 2010 Statut Membre Dernière intervention 10 septembre 2016 - Modifié par playboy-1990 le 13/10/2012 à 03:52
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 13 oct. 2012 à 17:08
Bonjour,

Je débute en c++ et je me demande comment le compilateur fonctionne pour savoir quel fichiers cpp il utilise, car apparemment ce langage ne fonctionne pas comme les autres pour les inclusions de fichiers.
Par exemple dans mon fichier "main.cpp" j'indique "#include "MaClass.hpp".
Comment le compilateur va savoir qu'il doit aussi inclure le fichier "MaClass.cpp" ?


Merci d'avance !
A voir également:

2 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
13 oct. 2012 à 12:10
Bonjour,
Je ne vois pas en quoi le C++ ne fonctionne pas comme les autres pour l'inclusion de fichier. En tout cas, il fonctionne sur le même principe que le C.
Il inclut l'entête .hpp dans chacun des fichiers. Ensuite, il va compiler chacun des fichiers séparément (enfin c'est toi qui vas lui demander) pour produire un fichier objet.
Et lors de l'édition des liens (dernière étape de la compilation), il rassemblera chacun des fichiers objets en un exécutable. Il aura ainsi connaissance des codes de toutes les fonctions se trouvant dans chacun des fichiers .hpp.

Cdlt,
0
playboy-1990 Messages postés 458 Date d'inscription samedi 27 mars 2010 Statut Membre Dernière intervention 10 septembre 2016 273
13 oct. 2012 à 16:49
Merci, mais comment il sait qu'il doit inclure les fichiers .cpp car on n'indique pas #include "MaClass.cpp" mais uniquement #include "MaClass.hpp"


Pour la différence avec le C et C++ par rapport aux autres langages, c'est qu'il ne faut pas faire la définissions des fonctions et donc il n'y a pas ce problème des fichier headers, ... en gros tous les fichiers doivent être inclus sans exception.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
13 oct. 2012 à 17:08
Merci, mais comment il sait qu'il doit inclure les fichiers .cpp car on n'indique pas #include "MaClass.cpp" mais uniquement #include "MaClass.hpp"
Cf. ma réponse ci-dessus.
Je la refais autrement : tu vas compiler avec :
g++ -c Main.cpp -o Main.o
g++ -c MaClass.cpp -o MaClass.o
g++ Main.o Maclass.o -o Programme

Pour les deux premières lignes, le compilateur inclus simplement les .hpp. Et compilera. A ce moment-là, le compilateur n'a pas besoin de connaître le code MaClass.cpp. Le compilateur sait juste qu'il existe quelque part.
Puis à la troisième ligne, tout s'emboîte. Le compilateur va pouvoir faire les correspondances.
0