6
votes

C ++ inclure la garde

Je sais donc comment placer un gardien Inclure dans mes propres fichiers d'en-tête avec la norme

#ifndef FOO_H
#define FOO_H

#include <string>

... code etc ...

#endif


0 commentaires

3 Réponses :


11
votes

La bibliothèque STL comprend également des gardes et toute bonne bibliothèque doit faire la même chose. XXX

Ceci est de GCC


1 commentaires

Microsoft utilise #pragma une fois - leur version exclusive des gardes d'en-tête. Ce qui va bien: la "stl" est de nos jours une partie du compilateur et peut donc utiliser des extensions de langage spécifiques au compilateur.



3
votes

Inclure l'utilisation de la protection pour protéger le contenu à l'intérieur de la paire de garde. Vous pouvez vérifier le fichier Head System String , il a également la protection include. Donc, ne vous inquiétez pas pour plusieurs inclusions.


0 commentaires

6
votes

En supposant que, par "stl", vous voulez dire la bibliothèque standard C ++, vous pouvez également vous reporter à la norme C ++. §17.6.2.2.2 / 2 états:

Une unité de traduction peut inclure des en-têtes de bibliothèque dans n'importe quel ordre. Chacun peut être inclus plus d'une fois, sans effet différent d'être inclus une fois, sauf que l'effet d'inclure ou dépend de chaque Temps sur la définition lexicalement actuelle de NDEBUG.

Cela signifie qu'il n'est pas nécessaire de protéger plusieurs inclusions de la même en-tête.


0 commentaires