Pour éviter plusieurs inclut un fichier d'en-tête, l'un de mes amis a suggéré la manière suivante où _interfaceMessage_hpp est juste un identifiant p> mais quand je déclare une classe Utilisation de Visual Studio 2005 IDE I Obtenir une déclaration comme
#pragma une fois
Au début de la définition de la classe
Quand j'ai pris l'aide de MSDN pour trouver le but de #pragma une fois
Il m'a donné l'explication suivante p> "Spécifie que le fichier sera inclus (ouvert) une seule fois par le compilateur lors de la compilation d'un fichier de code source." P> Quelqu'un s'il vous plaît dire quel est le approche droite?, si les deux sont corrects, quelle est la différence? est une approche est meilleure que l'autre? p> p>
3 Réponses :
GCC a des pragmes une fois comme obsolète. Vous devez utiliser la norme inclure les gardes. Toutes les directives de pragma sont définies par définition de la mise en œuvre. Donc, si vous voulez la portabilité, ne les utilisez pas. P>
Non obscuré depuis GCC 3.4, voir gcc.gnu.org/gcc-3.4/changes. HTML
La première approche est l'approche générique qui fonctionne avec tous les compilateurs et est aussi ancienne autour. L'approche #pragma une fois code> est un compilateur spécifique. P>
Pragmas sont spécifiques au compilateur, alors j'utiliserais Les directives de préprocesseur sont résolues au cours de la compilation (en réalité avant), elles ne font donc pas une différence d'exécution, sauf peut-être pour la compilation. P>
Cependant, vous ne remarquerez jamais une différence de compilation de ces deux alternatives que si vous les utilisez plusieurs milliers de fois, je suppose. P> #Ifndef code>. p>
N'utilisez pas d'identificateurs commençant par un soulignement suivi d'une lettre majuscule, elles sont réservées.