C++ Dois-je inclure des bibliothèques standard pour chaque fichier source?
Je suis un peu confus pour le moment parce que j'ai l'intention d'inclure plusieurs source et les fichiers d'en-tête pour la première fois dans un de mes projets.
Alors je me demandais si ce serait la bonne solution?
Dois-je inclure la chaîne d'en-tête de chaque fichier source qui utilise directement?
Et que dire de la "stdafx.hpp" en-tête que Visual C++ veut de moi?
Serait-ce la voie à suivre?
main.cpp
#include "stdafx.hpp"
#include <string> //?
#include <stringLib1.h>
#include <stringLib2.h>
using std::string;
//use a windows.h function here
//use a stringLib1 function here
//use a stringLib2 function here
stringLib1.h
#include "stdafx.hpp"
#include <string>
using std::string;
class uselessClass1
{
public:
string GetStringBack1(string myString);
};
stringLib1.cpp
#include "stdafx.hpp"
string uselessClass1::GetStringBack1(string myString) {
return myString;
}
stringLib2.h
#include "stdafx.hpp"
#include <string>
using std::string;
class uselessClass2
{
public:
string GetStringBack2(string myString);
};
stringLib2.cpp
#include "stdafx.hpp"
string uselessClass2::GetStringBack2(string myString) {
return myString;
}
Oui, vous devez inclure les fichiers d'en-tête de chaque fichier que vous souhaitez utiliser. Cependant, vous ne devez pas utiliser le
J'espère que c'était un commentaire sarcastique, et vous n'avez pas grave.
Dans chaque fichier c vous d'inclure votre en-tête, le
L'ajout de
Ce qui n'est pas une question de style.
using
mot-clé dans un en-tête. Ce n'est pas un bon style.J'espère que c'était un commentaire sarcastique, et vous n'avez pas grave.
Dans chaque fichier c vous d'inclure votre en-tête, le
using
sera aussi inclus. Que peuvent produire certaines mauvaises conflits de noms.L'ajout de
using
déclarations de fichiers d'en-tête est l'un des moyens les plus rapides pour cause espace de noms de la pollution de l'Ce qui n'est pas une question de style.
OriginalL'auteur Forivin | 2014-09-16
Vous devez vous connecter pour publier un commentaire.
Une bonne pratique est généralement d'inclure seulement ce que votre code utilise dans chaque fichier. Qui réduit les dépendances sur d'autres en-têtes et des, grands projets, de réduire les temps de compilation (et aussi aide à trouver ce qui dépend quoi)
Utilisation inclure des gardes dans vos fichiers d'en-tête
De ne pas importer le tout par polluantes l'espace de noms global, par exemple
mais plutôt à qualifier ce que vous avez l'intention d'utiliser quand vous en avez besoin
Vous n'avez pas besoin
stdafx.h
dans votre projet sauf si vous êtes en utilisant les en-têtes précompilés. Vous pouvez contrôler ce comportement dans le VS propriétés du projet (C/C++ -> Headers Précompilés -> en-Tête Précompilé)OriginalL'auteur Marco A.
La
stdafx.h
en-tête est nécessaire si un en-tête précompilé est activé dans le VS. (Lire celui-ci)Vous avez seulement besoin d'inclure les
stdafx.h
dans votre.cpp
fichiers comme la première inclure.Concernant l'en-tête et les fichiers cpp (qui vont par paires), inclure des choses nécessaires pour la déclaration dans l'en-tête, et tout le reste (nécessaire pour la définition) dans le rpc. Également inclure l'en-tête correspondant à son rpc paire de trop. Et l'utilisation inclure des gardes.
myclass.h
myclass.cpp
Puis dans
main(...)
, vous pouvez simplement incluremyclass.h
et appelgenerate()
fonction.OriginalL'auteur Gyebro
La stdafx inclure devrait être la priorité de tous .fichier cpp et il ne devrait PAS être dans .h fichiers.
Vous pourriez mettre #include < string > dans stdafx.h si vous ne voulez pas mettre dans tous les autres fichiers.
Vrai, mais vous pouvez facilement ajouter des en-têtes manquantes lorsque vous rencontrez l'erreur ne pouvez-vous pas?
Oui, mais si c'est une autre personne dans un autre département de travail sur un autre projet qui arrive à partager le code avec le vôtre, qui fait la découverte, la situation devient de politique! 🙂
OriginalL'auteur XTF
Je suppose que vous devez avoir vos propres fichiers d'en-tête qui peut être exigeant dans d'autres rpc fichiers et les fichiers d'en-tête. Comme celui qui vous a donné
À mon avis, de son mieux pour créer un en-tête commun de fichier dans lequel vous incluez toutes les communes de la bibliothèque de fichiers d'en-tête et de votre projet fichier d'en-tête. Ce fichier alors que vous pouvez inclure dans tous les autres fichiers cpp et le fichier d'en-tête. Et il sera préférable d'utiliser l'en-tête des gardes aussi.
Donc, compte tenu d'un en-tête commun de fichiers ".h".
C'est maintenant votre commune de fichier d'en-tête. Ce que vous pouvez inclure dans tous les fichiers de votre projet.
Je suppose que vous n'avez jamais travaillé sur un gros projet C++.. cette idée bientôt s'avère être l'enfer sur Terre
Comme une question de fait, dans mon entreprise, cette approche est suivie. Et, puisque vous avez souligné que ce n'est pas une bonne approche, je vais regarder de plus en plus. Merci.
OriginalL'auteur Arpit