Utilisation des en-têtes de bibliothèque C++
Vous incluez le contenu d'un en-tête standard en nommant dans une directive Include.
#include <iostream> // include I/O facilities
Vous pouvez inclure les en-têtes standard dans n'importe quel ordre, un en-tête standard plusieurs fois, ou les en-têtes deux ou plusieurs standard qui définissent la même macro ou le même type.N'incluez pas d'en-tête standard dans une déclaration.Ne définissez pas les macros qui ont les mêmes noms que les mots clés avant d'inclure un en-tête standard.
L'en-tête de bibliothèque C++ inclut tous les autres en-têtes de bibliothèque C++ qu'il doit définir les types nécessaires.(Incluent toujours explicitement tous les en-têtes de bibliothèque C++ nécessaires dans une unité de traduction, cependant, de peur que vous deviniez du mal à propos de ses dépendances réelles.) Un en-tête C standard ne contient jamais un autre en-tête standard.Un en-tête standard déclare ou définit uniquement les entités décrites pour celle-ci dans ce document.
Chaque fonction dans la bibliothèque est déclarée dans un en-tête standard.Contrairement à C standard, l'en-tête standard ne prend jamais à une macro masquante le même nom que la fonction qui masque la déclaration de fonction et atteint le même effet.Pour plus d'informations sur le masquage des macros, consultez Conventions de bibliothèque C++.
Tous les noms autres que operator delete et operator new dans les en-têtes de bibliothèque C++ sont définis dans l'espace de noms d' std , ou dans un espace de noms imbriqué dans l'espace de noms d' std .Vous faites référence au nom cin, par exemple, comme std::cin.La notez, cependant, que les noms de macros ne sont pas soumis à la qualification de l'espace de noms, vous entrez toujours __STD_COMPLEX sans qualificateur de l'espace de noms.
Dans certains environnements de traduction, y compris l'en-tête de bibliothèque C++ peut lever des noms externes déclaré également s dans l'espace de noms d' std dans l'espace de noms global, avec des déclarations d' using pour chacun des noms.Sinon, l'en-tête ne présente aucun nom de la bibliothèque dans l'espace de noms actuel.
La norme C++ exige que les en-têtes C standard déclarent des noms externes dans l'espace de noms std, puis les lève dans l'espace de noms global avec des déclarations d' using pour chacun des noms.Mais dans certains environnements de traduction les en-têtes C standard n'incluent pas de déclaration d'espace de noms, vous déclarez tous les noms directement dans l'espace de noms global.Par conséquent, la méthode la plus portable de traiter les espaces de noms est de suivre deux règles :
Pour déclarer assurément dans l'espace de noms std un nom externe qui est généralement déclaré dans <stdlib.h>, par exemple, incluez l'en-tête <cstdlib>.Sachez que le nom peut également être déclaré dans l'espace de noms global.
Pour déclarer assurément dans l'espace de noms global un nom externe déclaré dans <stdlib.h>, incluez l'en-tête <stdlib.h> directement.Sachez que le nom peut également être déclaré dans l'espace de noms std.
Par conséquent, si vous souhaitez appeler std::abort pour provoquer l'arrêt anormal, vous devez inclure <cstdlib>.Si vous souhaitez appeler abort, vous devez inclure <stdlib.h>.
Sinon, vous pouvez écrire la déclaration :
using namespace std;
ce qui présente tous les noms de bibliothèques dans l'espace de noms actuel.Si vous écrivez des directives Include de cette déclaration immédiatement après tout, vous levez des noms dans l'espace de noms global.Vous pouvez ensuite ignorer les considérations de l'espace de noms dans le reste de l'unité de traduction.Vous évitez également la plupart des différences entre différents environnements de traduction.
À moins que spécifiquement indiqué sinon, vous ne pouvez pas définir de noms dans l'espace de noms d' std , ou dans un espace de noms imbriqué dans l'espace de noms d' std , dans le cadre de votre programme.