La chose importante à garder à l'esprit que vos en-têtes ne doivent pas être dépendant des autres en-têtes inclus en premier. Une manière de s'assurer d'inclure votre les en-têtes avant tous les autres en-têtes.
"Penser en C++" mentionne notamment ce, référencement Lakos' "à Grande Échelle en C++ de Logiciels de Conception":
Latente les erreurs d'utilisation peut être évité en s'assurant que l' .h fichier d'un composant analyse par lui-même – sans de l'extérieur de déclarations ou de définitions... y Compris la .h fichier que la première ligne de la .c fichier s'assure qu'aucun élément d'information intrinsèque à l'interface physique du composant est manquant dans le .h de fichier (ou, s'il en est, que vous trouverez à ce sujet dès que vous essayez de compiler le .c fichier).
C'est-à-dire dans l'ordre suivant:
- Le prototype de l'interface de l'en-tête de cette mise en œuvre (c'est à dire, le .h/.hh fichier qui correspond à cela .rpc/.cc fichier).
- D'autres en-têtes d'un même projet, en tant que de besoin.
- Les en-têtes des autres non-standard, non-système de bibliothèques (par exemple, Qt, Propres, etc).
- Les en-têtes des autres "presque " standard" des bibliothèques (par exemple, Boost)
- Standard C++ en-têtes (par exemple, iostream, fonctionnel, etc)
- La norme C-têtes (par exemple, cstdint, dirent.h, etc)
Si l'un des en-têtes ont un problème avec le fait d'être inclus dans cet ordre, les corriger (si le vôtre) ou ne pas les utiliser. Boycott des bibliothèques qui n'écrivent pas de nettoyer les en-têtes.
Google C++ style guide (http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml) soutient presque l'inverse, avec pas vraiment de justification à tous; j'ai personnellement tendance à favoriser la Lakos approche.