6
votes

Qui est efficace pour utiliser #pragma une fois ou #Ifndef #endif?

Pour éviter plusieurs inclut un fichier d'en-tête, l'un de mes amis a suggéré la manière suivante xxx

où _interfaceMessage_hpp est juste un identifiant

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

"Spécifie que le fichier sera inclus (ouvert) une seule fois par le compilateur lors de la compilation d'un fichier de code source."

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?


1 commentaires

N'utilisez pas d'identificateurs commençant par un soulignement suivi d'une lettre majuscule, elles sont réservées.


3 Réponses :


7
votes

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.


1 commentaires

Non obscuré depuis GCC 3.4, voir gcc.gnu.org/gcc-3.4/changes. HTML



2
votes

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 est un compilateur spécifique.


0 commentaires

4
votes

Pragmas sont spécifiques au compilateur, alors j'utiliserais #Ifndef .

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.

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.


0 commentaires