312 votes

.c vs .cc vs. .cpp vs .hpp vs .h vs .cxx

Doublons Possibles:
*.h ou *.php pour vos définitions de classe
Corriger le code C++ extension de fichier? .cc vs .rpc

J'ai l'habitude de penser qu'il a utilisé pour être que:

  • .h des fichiers sont des fichiers d'en-tête pour le C et le C++, et ne contiennent que des déclarations.
  • .c fichiers de code source C.
  • .cpp sont les fichiers de code source C++ (qui peut également être C code source).

ensuite, les fichiers comme .hpp, .cc, et .cxx sont venus le long, et je suis totalement confus... quelle est la différence(s) entre ces deux? Lorsque vous utilisez le "nouveau"?

373voto

AProgrammer Points 31212

Historiquement, les premières extensions utilisés pour le C++ ont été .c et .h, exactement comme pour C. Cela a causé des problèmes pratiques, en particulier l' .c qui ne permettent pas de construire des systèmes de différencier facilement les C++ et C fichiers.

Unix, C++ a été développé, est sensible à la casse des systèmes de fichiers. Si certains ont utilisé .C pour les fichiers C++. D'autres utilisés .c++, .cc et .cxx. .C et .c++ le problème est qu'ils ne sont pas disponibles sur d'autres systèmes de fichiers et leur utilisation a rapidement chuté. DOS et Windows compilateurs C++ avaient tendance à utiliser .cpp, et certains d'entre eux font le choix difficile, si pas impossible, de les configurer. La portabilité de la contrepartie qui a été le choix le plus commun, même en dehors de MS-Windows.

Les en-têtes ont utilisé la correspondante .H, .h++, .hh, .hxx et .hpp. Mais à la différence des principaux fichiers, .h reste à ce jour un choix populaire pour le C++, même avec l'inconvénient qu'elle ne permet pas de savoir si l'en-tête peut être inclus dans C contexte ou non. Des en-têtes Standard maintenant n'ont pas d'extension.

En outre, certains utilisent des .ii, .ixx, .ipp, .inl pour les en-têtes de fournir inline définitions et .txx, .tpp et .tpl pour le modèle de définitions. Ceux-ci sont inclus dans les en-têtes de la définition, ou manuellement dans les contextes où ils sont nécessaires.

Compilateurs et des outils, généralement, ne se soucient pas de ce que les extensions sont utilisées, mais en utilisant une extension qu'ils associent avec le C++ empêche la nécessité de suivre comment les configurer de sorte qu'ils correctement reconnaître la langue utilisée.

68voto

Bo Persson Points 42821

Ces extensions ne sont pas vraiment nouvelles, ils sont vieux. :-)

Quand le C++, il y a certaines personnes voulaient avoir un .c++ extension pour les fichiers source, mais cela ne fonctionne pas sur la plupart des systèmes de fichiers. Donc, ils ont essayé quelque chose de proche de ce que, comme .cxx, ou .rpc à la place.

D'autres ont pensé sur le nom de la langue, et "incrémentation" .c, pour obtenir .cc ou même .C dans certains cas. Ne le voyez pas sur que beaucoup.

Certains sont d'avis que si la source est .rpc, les en-têtes doivent être .php de match. Un succès modéré.

33voto

Martin Beckett Points 60406

Ça n'a vraiment pas d'importance.
Si vous alimentez un compilateur c ++ en .c, il compilera en cpp, .cc / .cxx est juste une alternative à .cpp utilisée par certains compilateurs.

.hpp est une tentative pour distinguer les fichiers d'en-tête où il existe des différences significatives entre c et c ++. Une utilisation courante est que le fichier .hpp ait les wrappers ou les espaces de noms nécessaires pour cpp, puis inclue le .h afin d'exposer la bibliothèque ac à c et c ++.

27voto

crodriguezo Points 335

J'utilise ".hpp" pour les en-têtes C ++ et ".h" pour les en-têtes de langage C. Le ".hpp" me rappelle que le fichier contient des instructions pour le langage C ++ qui ne sont pas valides pour le langage C, telles que les déclarations "class".

10voto

Parsa Jamshidi Points 408

Parle .php extension, que je trouve très utile quand les gens sont censés savoir que ce fichier d'en-tête contient C++ un pas de C, comme l'utilisation d'espaces de noms ou d'un modèle, etc, en ce moment ils voir les fichiers, donc ils ne seront pas essayer de l'alimenter pour un Ccompilateur! Et j'aime aussi le nom d'en-tête des fichiers qui contiennent non seulement des déclarations, mais des implémentations ainsi, que .php les fichiers. comme les fichiers d'en-tête, y compris des classes template. Même si ce n'est que mon avis et bien sûr, il n'est pas censé être de droite! :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X