{C++} Question d'inclusion fichiers cpp
playboy-1990
Messages postés
458
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
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 !
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:
- {C++} Question d'inclusion fichiers cpp
- Vérificateur des fichiers système - Guide
- Renommer des fichiers en masse - Guide
- Fichiers epub - Guide
- Wetransfer gratuit fichiers lourd - Guide
- Explorateur de fichiers - Guide
2 réponses
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,
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,
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.
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.
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.
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.