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 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