J'ai vu du code C ++ enregistré sous forme de fichiers .cc
et .cpp
. Y a-t-il une différence entre les deux?
Le guide de style Google semble suggérer .cc
, mais ne fournit aucune explication.
Je m'intéresse principalement aux programmes sur les systèmes Linux.
lint
se soucie,.C
est C ++ et.c
est C sans aucune compréhension de.cc
ou.cpp
. Au moins sur AIX 6.1..cc
.Réponses:
En fin de compte, cela n'a pas d'importance car les compilateurs C ++ peuvent traiter les fichiers dans l'un ou l'autre format. Si c'est un vrai problème au sein de votre équipe, lancez une pièce et passez au travail réel.
la source
GNU GCC reconnaît tous les éléments suivants sous forme de fichiers C ++, et utilisera C ++ compilation peu importe si vous l' invoquons par gcc ou g ++:
.C
,.cc
,.cpp
,.CPP
,.c++
,.cp
ou.cxx
.Notez que
.C
- le cas est important dans GCC,.c
c'est un fichier C alors que.C
c'est un fichier C ++ (si vous laissez le compilateur décider de ce qu'il compile).GCC prend également en charge d'autres suffixes pour indiquer une gestion spéciale, par exemple un
.ii
fichier sera compilé en C ++, mais pas prétraité (destiné au code prétraité séparément). Tous les suffixes reconnus sont détaillés sur gcc.gnu.orgla source
De bons conseils sur l'utilisation du makefile et d'autres outils, en tenant compte des outils non compilateurs tout en décidant quelle extension utiliser est une excellente approche pour aider à trouver une réponse qui vous convient.
Je voulais juste ajouter ce qui suit pour aider avec certaines informations
.cc
vs.cpp
que j'ai trouvées. Les extensions suivantes sont décomposées par différents environnements (du livre "C ++ Primer Plus"):Utilisations Unix:
.C
,.cc
,.cxx
,.c
GNU C ++ utilise:
.C
,.cc
,.cxx
,.cpp
,.c++
Mars: utilisations numériques
.cpp
,.cxx
Borland C ++ utilise:
.cpp
Watcom utilise:
.cpp
Microsoft Visual C ++ utilise:
.cpp
,.cxx
,.cc
Utilisations: CodeWarrior Metrowerks
.cpp
,.cp
,.cc
,.cxx
,.c++
Les différents environnements prennent en charge différentes extensions. Moi aussi, je cherchais à répondre à cette question et j'ai trouvé ce message. Sur la base de ce post, je pense que je pourrais aller avec
.hpp
et.cpp
pour faciliter la reconnaissance multi-plateforme / multi-outil.la source
.cpp
t-il pas ?.cpp
pour les fichiers source C ++. (La réponse citée note que "cpp" est l'abréviation du préprocesseur C.).cpp
est l'extension recommandée pour C ++ pour autant que je sache. Certaines personnes recommandent même d'utiliser.hpp
pour les en-têtes C ++, juste pour faire la différence avec C.Bien que le compilateur ne se soucie pas de ce que vous faites, c'est une préférence personnelle.
la source
J'utilise personnellement l'
.cc
extension pour les fichiers d'implémentation, les.hh
en-têtes et.inl
les modèles en ligne /.Comme dit précédemment, c'est avant tout une question de goût.
D'après ce que j'ai vu ,
.cc
semble être plus " orienté vers les projets open source ", comme il est conseillé dans certains grands styles de codage de logiciels open source, alors que.cpp
semble être plus Windowish.--- ÉDITER
Comme mentionné, c'est "d'après ce que j'ai vu" , cela peut être faux. C'est juste que tous les projets Windows sur lesquels j'ai travaillé sont utilisés
.cpp
, et beaucoup de projets open source (qui sont principalement sur des likes Unix).cc
.Exemples de styles de codage utilisant
.cc
:la source
-*- C++ -*-
balise dans les en-têtes llvm.org/docs/CodingStandards.html ; Mozilla Coding Style suggère .cpp / .h developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/… ; KDE semble utiliser .cpp / .h trop quickgit.kde.orgLes autres extensions de fichier utilisées incluent
.cxx
et.C
(C majuscule). Je crois que Bjarne Stroustrup a utilisé à l'.C
origine..cpp
est le nom du préprocesseur C, il est donc regrettable qu'il ait également été utilisé pour C ++.la source
L'autre option est
.cxx
où lex
est censé être un plus tourné de 45 °.Windows, Mac et Linux prennent tous en charge
.c++
, nous devons donc simplement l'utiliser.la source
Plusieurs personnes disent que
.cc
cela ne représente rien? C'est possible. C ++ a commencé sa vie en tant que "C avec classes".C'est vrai
.cc
et ce.cpp
sont aussi des noms de commandes sur la plupart des systèmes Unix (compilateur c et préprocesseur c respectivement).J'utilise
.cpp
exclusivement, mais j'ai commencé sur Windows..cc
est plus une convention Unix, même si je la vois de moins en moins. La marque GNU a des règles.cpp
donc c'est probablement préférable, cela fonctionnera par défaut sur Windows et tout le reste. D'un autre côté, le C ++ moderne n'utilise aucune extension pour les en-têtes, je n'aime vraiment pas ça. Tous mes projets utilisent.h
des fichiers d'en-tête, et ils prennent en charge autant que possible C et C ++ viaextern "C"
et les tests__cplusplus
.la source
Suivez simplement la convention utilisée par le projet / l'équipe.
la source
Personnellement, je n'ai jamais vu
.cc
de projet sur lequel j'ai travaillé, mais en toute technicité, le compilateur s'en fiche.Qui se souciera des développeurs travaillant sur votre source, donc ma règle de base est d'aller avec ce que votre équipe est à l'aise. Si votre «équipe» est la communauté open source, optez pour quelque chose de très courant, qui
.cpp
semble être le favori.la source
.cc
une extension de fichier pour les fichiers d'implémentation C ++Comme avec la plupart des conventions de style, il n'y a que deux choses qui comptent:
Ceux-ci peuvent sembler contradictoires, mais ils ont chacun une valeur pour leurs propres raisons.
la source
.C
et.cc
semblent être la norme pour les (quelques) programmes C ++ orientés Unix que j'ai vus. Je me suis toujours utilisé.cpp
, car je ne travaille vraiment que sur Windows et c'est la norme depuis toujours.Je le recommande
.cpp
personnellement, car ... cela signifie "C Plus Plus". Il est bien sûr extrêmement important que les extensions de fichier soient des acronymes, mais si cette justification s'avère insuffisamment convaincante, d'autres éléments importants sont la non-utilisation de la touche Maj (qui exclut.C
et.c++
) et l'évitement des métacaractères d'expression régulière lorsque cela est possible (qui exclut.c++
- malheureusement, vous ne pouvez pas vraiment éviter cela.
bien sûr.).Cela n'exclut pas
.cc
, donc même s'il ne représente vraiment rien (ou le fait-il?), C'est probablement un bon choix pour le code orienté Linux.la source
J'ai utilisé .C et .h pour la source et l'en-tête, respectivement. Une bonne chose avec ce choix est que, sur la ligne de commande, il est facile à utiliser
*.[Ch]
pour sélectionner tous les fichiers de code. L'utilisation.C
pourrait être un problème sur les systèmes de fichiers insensibles à la casse, mais si vous en avezfoo.c
etfoo.C
dans le même répertoire, vous méritez tout de même ce que vous obtenez :)la source
L'extension .cc est nécessaire pour utiliser des règles implicites dans les makefiles. Parcourez ces liens pour mieux comprendre les makefiles, mais regardez principalement le second, car il indique clairement l'utilité de l'extension .cc:
ftp://ftp.gnu.org/old-gnu/Manuals/make-3.79.1/html_chapter/make_2.html
https://ftp.gnu.org/old-gnu/Manuals/make-3.79.1/html_chapter/make_10.html
Je viens d'apprendre cela maintenant.
la source
.cpp
fichiers. Pas de soucis ! :-).C
peut être problématique sur les systèmes avec des systèmes de fichiers insensibles à la casse. Je ne pense pas qu'il y ait un avantage particulier, en ce quimake
concerne, à utiliser.cc
plus.cpp
, par exemple. Les makefiles fonctionnent très bien avec les.cpp
fichiers source C ++.Peu importe laquelle de ces extensions vous utiliseriez. Choisissez ce que vous aimez le plus, soyez juste cohérent avec la dénomination. La seule exception que je connaisse avec cette convention de dénomination est que je ne pouvais pas faire
WinDDK
(ou est-ceWDK
maintenant?) Pour compiler des.cc
fichiers. Sur Linux, ce n'est guère un problème.la source
Je démarre un nouveau projet C ++ et j'ai commencé à chercher les dernières nouveautés dans le style C ++. Je me suis retrouvé ici en ce qui concerne la dénomination des fichiers et j'ai pensé que je partagerais comment j'ai fait mon choix. Voici:
Stroustrup considère cela plus comme une considération commerciale que technique .
En suivant ses conseils, vérifions ce que les chaînes d'outils attendent.
Pour UNIX / Linux, vous pouvez interpréter les règles de création GNU par défaut suivantes comme favorisant le suffixe du nom de fichier .cc, car les règles .cpp et .C ne sont que des alias:
(Remarque: il n'y a pas d'alias COMPILE.cxx par défaut)
Donc, si vous ciblez UNIX / Linux, .cc et .cpp sont de très bonnes options.
Lorsque vous ciblez Windows, vous recherchez des problèmes avec .C, car son système de fichiers est insensible à la casse. Et il peut être important pour vous de noter que Visual Studio favorise le suffixe .cpp
Lorsque vous ciblez macOS, notez que Xcode préfère .cpp / .hpp (juste vérifié sur Xcode 10.1). Vous pouvez toujours modifier le modèle d'en-tête pour utiliser .h.
Pour ce que cela vaut, vous pouvez également baser votre décision sur les bases de code que vous aimez. Google utilise .cc et LLVM libc ++ utilise .cpp, par exemple.
Qu'en est-il des fichiers d'en-tête? Ils sont compilés dans le contexte d'un fichier C ou C ++, il n'y a donc pas besoin de compilateur ou de système de génération pour distinguer .h de .hpp. La mise en évidence de la syntaxe et l'indentation automatique par votre éditeur / IDE peuvent cependant être un problème, mais cela est résolu en associant tous les fichiers .h à un mode C ++. À titre d'exemple, ma configuration emacs sous Linux charge tous les fichiers .h en mode C ++ et modifie très bien les en-têtes C. Au-delà de cela, lorsque vous mélangez C et C ++, vous pouvez suivre ces conseils .
la source
Comme d'autres l'ont écrit avant moi, à la fin c'est ce qui est utilisé par votre projet / équipe / entreprise.
Personnellement, je n'utilise pas d'
cc
extension, j'essaie de réduire le nombre d'extensions et de ne pas les augmenter, sauf s'il y a une valeur claire (à mon avis).Pour ce que ça vaut, voici ce que j'utilise :
c
- Code C pur uniquement, pas de classes ou de structures avec des méthodes.cpp
- Code C ++hpp
- Code en-têtes uniquement. Les implémentations sont dans les en-têtes (comme les classes de modèles)h
- fichiers d'en-tête pour C / C ++. Je suis d'accord qu'une autre distinction peut être faite, mais comme je l'ai écrit, j'essaie de réduire le nombre d'extensions pour plus de simplicité. Au moins pour les projets C ++ dans lesquels j'ai travaillé, lesh
fichiers pour pure-C sont plus rares, donc je ne voulais pas ajouter une autre extension.la source