En-tête C++ et fichiers de mise en œuvre: quoi?
Il y a un .h et le fichier .rpc fichier avec le même nom mais une extension différente.
Si je veux utiliser ce qui est dans le .fichier cpp, dois-je inclure la .h fichier ou le .fichier cpp?
Beaucoup de dupes, y compris stackoverflow.com/questions/280033/...
OriginalL'auteur neuromancer | 2010-05-22
Vous devez vous connecter pour publier un commentaire.
La réponse simple est que vous avez presque toujours souhaitez inclure .h les fichiers, et de les compiler .fichiers cpp. Fichiers CPP sont (généralement) le vrai code, et H les fichiers sont (généralement) de l'avant-déclarations.
La plus longue réponse, c'est que vous pouvez être en mesure d'inclure un ou l'autre, et il pourrait travailler pour vous, mais les deux donnent des résultats légèrement différents.
Ce que "comprendre" n'est essentiellement de copier/coller le fichier à cette ligne. Il n'a pas d'importance ce que l'extension est, il inclut le contenu du fichier de la même façon.
Mais le code C++ est, par convention, généralement écrit de cette manière:
SomeClass.cpp -
SomeClass.h -
Si vous incluez l'une de ces, vous pouvez utiliser le code. Toutefois, si vous avez plusieurs fichiers qui contiennent le même .fichier cpp, vous pouvez obtenir des erreurs sur la re-définition. Les fichiers d'entête (.h fichiers) ne contiennent souvent que des déclarations de l'avant, et pas des implémentations, donc y compris dans plusieurs endroits ne vous donnera pas des erreurs à propos de la re-définition.
Si vous en quelque sorte gérer à compiler sans erreurs lors de l'inclusion .rpc fichiers à partir d'autres .rpc fichiers, vous pouvez toujours retrouver avec le code dupliqué. Cela se produit si vous incluez le même .fichiers cpp dans plusieurs autres fichiers. C'est comme vous l'avez écrit la fonction deux fois. Cela permettra de rendre votre programme plus sur le disque, prendre plus de temps pour compiler et exécuter un peu plus lent.
Le principal inconvénient est que cette mise en oeuvre, avant la déclaration de la convention n'est pas vrai pour le code qui utilise des modèles. Modèle code sera toujours remis à vous .h les fichiers, mais (normalement) est directement mis en œuvre dans le .h fichier, et n'ont pas d'accompagnement .fichiers cpp.
Juste pour préciser, quand vous dites, "inclure .h les fichiers, et de les compiler .fichiers cpp," tu veux dire en plus, y compris l'en-tête (.h) des fichiers à partir de votre soi-disant classe principale, vous devez également ajouter la mise en œuvre (.rpc) des fichiers pour le compilateur de ligne avec la classe principale?
Pas sûr de ce que tu veux dire par "le long de avec la classe principale", car il n'y a pas de "classe principale" en C++, mais ce que vous dites est très correct. En outre, les différents compilateurs de travailler différemment, donc je ne peux pas dire que vous pouvez certainement ajouter plusieurs fichiers cpp à la ligne de commande du compilateur que vous utilisez. La principale distinction est que
.h
fichiers ont tendance à être inclus, tandis que.cpp
ont tendance à être transmis directement à l'compilateur.Par "classe principale" je voulais parler de la classe avec la fonction main (). Je suis à l'aide de GCC et a constaté moi-même que ce n'est en effet provoquer le programme se compile correctement. J'étais auparavant, y compris l' .fichiers cpp dans mon code jusqu'à ce que mon superviseur a indiqué que la pratique était découragé et seulement .h les fichiers doivent toujours être inclus. Merci.
J'ai vraiment besoin d'inclure plus de détails sur les modèles...
OriginalL'auteur Merlyn Morgan-Graham
L' .h fichier contient généralement la déclaration de la classe et de l' .fichier cpp la définition de la classe (mise en œuvre). Vous devez inclure l' .h dans le .fichier cpp.
Une bonne règle de base est de ne JAMAIS inclure un .fichier cpp, parce que le
#include
la directive ne fait que copier le contenu du fichier inclus dans les fichiers. Vous pourriez vous retrouver avec un multiple d'inclusion /définition et vous ne voulez certainement pas de le faire.OriginalL'auteur Opera
Habituellement, il est préférable d'écrire dans le fichier d'en-tête .h
de sorte que vous ne obtenez des erreurs sur la re-définition lorsque vous avez besoin d'inclure l' .fichier cpp dans d'autres fichiers.
OriginalL'auteur Raghad