Fichier de code C++ extension?.cc vs.cpp

j'ai vu le code C++ enregistré comme Fichiers .cc et .cpp . Est-il une différence entre les deux?

Le Google guide de style semble suggérer .cc , mais ne donne aucune explication.

je suis principalement concerné par les programmes sur les systèmes Linux.

448
demandé sur Jessica 2009-10-09 21:23:18

16 réponses

à la fin de la journée, il n'a pas d'importance parce que c++ compilateurs peuvent traiter les fichiers dans l'un ou l'autre format. Si c'est un vrai problème au sein de votre équipe, tirez à pile ou face et passez au travail.

543
répondu JaredPar 2015-03-14 19:03:09

GNU GCC reconnaît tout ce qui suit comme étant des fichiers C++, et utilisera la compilation c++ indépendamment du fait que vous l'invoquiez via gcc ou g++: .C , .cc , .cpp , .CPP , .c++ , .cp , ou .cxx .

Notez le .C - case matters in GCC, .c est un fichier C tandis que .C est un fichier c++ (si vous laissez le compilateur décider ce qu'il compilera).

GCC prend également en charge d'autres suffixes pour indiquer un traitement spécial, par exemple un fichier .ii sera compilé en C++, mais pas pré-traité (destiné au code pré-traité séparément). Tous les suffixes reconnus sont détaillés à gcc.gnu.org

217
répondu Clifford 2015-10-11 10:48:23

Grand Conseil sur lequel utiliser pour le makefile et d'autres outils, en tenant compte des outils non-compilateurs tout en décidant de l'extension à utiliser est une excellente approche pour aider à trouver une réponse qui fonctionne pour vous.

je voulais juste ajouter ce qui suit pour aider avec certains .cc vs .cpp info que j'ai trouvé. Les extensions suivantes sont ventilées par environnements différents (à partir de "C++ Primer Plus" book):

utilisations Unix: .C , .cc , .cxx , .c

GNU C++ utilise: .C , .cc , .cxx , .cpp , .c++

utilisations numériques de Mars: .cpp , .cxx

Borland C++ utilise: .cpp

Watcom utilise: .cpp

Microsoft Visual C++ utilise: .cpp , .cxx , .cc

Metrowerks Utilisations de CodeWarrior: .cpp , .cp , .cc , .cxx , .c++

les différents environnements prennent en charge différentes extensions. Moi aussi j'ai été à la recherche pour répondre à cette question et a conclu à ce poste. Basé sur ce post, je pense que je pourrais aller avec .hpp et .cpp pour la facilité de la reconnaissance de plate-forme/cross-tool.

143
répondu John S. 2017-03-31 15:24:43

.cpp est l'extension recommandée pour C++ autant que je sache. Certaines personnes recommandent même d'utiliser .hpp pour les en-têtes C++, juste pour différencier de C.

bien que le compilateur ne se soucie pas de ce que vous faites, c'est une préférence personnelle.

60
répondu Ryu 2017-04-17 14:25:15

personnellement, j'utilise .cc extension pour les fichiers de mise en œuvre, .hh pour les en-têtes, et .inl pour inline/modèles.

comme dit plus haut, c'est principalement une question de goût.

de ce que j'ai vu , .cc semble être plus" open source projects oriented ", comme il est conseillé dans certains grands logiciels libres des styles de codage, tandis que . cpp semble être plus Windowish.

- - - modifier

comme mentionné, c'est " de ce que j'ai vu " , il se peut que ce soit mal. C'est juste que tous les projets Windows sur lesquels j'ai travaillé utilisent .cpp , et beaucoup de projets open source (qui sont principalement sur unix-likes) utilisent .cc .

exemples de styles de codage utilisant .cc :

26
répondu Aurélien Vallée 2009-10-16 10:06:39

les autres extensions de fichiers utilisées sont .cxx et .C (capital C). Je crois que Bjarne Stroustrup a utilisé .C à l'origine. .cpp est le nom du préprocesseur C donc il est regrettable qu'il ait été utilisé pour C++ aussi.

15
répondu 2 revs, 2 users 89%user181548 2015-10-11 10:51:05

il suffit de suivre la convention utilisée par le projet/l'équipe.

10
répondu Ben S 2009-10-09 17:26:19

l'autre option est .cxx où le x est supposé être un + rotated 45°.

Windows, Mac et Linux prennent tous en charge .c++ .

9
répondu FigBug 2015-10-11 10:53:36

personnellement, je n'ai jamais vu .cc dans un projet sur lequel j'ai travaillé, mais en toute technicité le compilateur s'en fiche.

qui se souciera est les développeurs travaillant sur votre source, donc ma règle de base est d'aller avec ce que votre équipe est à l'aise avec. Si votre "équipe" est la communauté open source, aller avec quelque chose de très commun, dont .cpp semble être le favori.

8
répondu Toji 2015-10-11 10:51:36

plusieurs personnes disant .cc ne signifie rien? Il pourrait. C++ a commencé sa vie comme"C avec des Classes".

vrai que .cc et .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é sous Windows. .cc est plus une convention Unix, même si je la vois de moins en moins là. GNU make a des règles pour .cpp donc, c'est probablement préférable, il fonctionnera par défaut sur les deux fenêtres 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 pour les fichiers d'en-tête, et ils prennent en charge à la fois C et C++ autant que possible via extern "C" et les tests __cplusplus .

8
répondu Ben Voigt 2015-10-11 10:53:02

comme pour la plupart des conventions de style, il n'y a que deux choses qui comptent:

  1. soyez cohérent dans ce que vous utilisez, dans la mesure du possible.
  2. ne concevez rien qui dépend d'un choix précis.

ceux-ci peuvent sembler contredire, mais ils ont chacun valeur pour leurs propres raisons.

6
répondu Alan 2009-10-09 17:53:41

.C et .cc semblent être la norme pour les (quelques) Unix orientée vers les programmes C++ que j'ai vu. J'ai toujours utilisé .cpp moi-même, car je ne travaille vraiment que sur les fenêtres et c'est la norme depuis une éternité.

je recommande .cpp personnellement, parce que... il est synonyme de "Plus de C Plus". Il est bien sûr vital que les extensions de fichiers soient des acronymes, mais si cette justification ne s'avère pas suffisamment convaincante, d'autres les choses sont la non-utilisation de la touche shift (qui exclut .C et .c++ ) et l'évitement des métacharges d'expression régulière lorsque c'est possible (qui exclut .c++ -- malheureusement, vous ne pouvez pas vraiment éviter le . bien sûr.).

cela n'exclut pas .cc , donc même si cela ne signifie pas vraiment quelque chose (ou le fait?) c'est probablement un bon choix pour le code orienté Linux.

6
répondu please delete me 2009-10-09 18:04:41

j'ai utilisé .C et .h pour source et en-tête, respectivement. Une bonne chose avec ce choix est que, sur la ligne de commande, son facile à utiliser *.[Ch] pour sélectionner tous les fichiers de code. Utiliser .C pourrait être un problème sur les systèmes de fichiers insensibles à la casse, mais si vous avez foo.c et foo.C dans le même répertoire, vous méritez ce que vous obtenez de toute façon:)

6
répondu KeithB 2009-10-09 19:58:42

peu importe laquelle de ces extensions vous utiliserez. Choisissez celui qui vous plaît le plus, juste être cohérent avec le nom. La seule exception que je connaisse avec cette convention d'appellation est que je ne pouvais pas faire WinDDK (ou est-ce WDK maintenant?) pour compiler les fichiers .cc . Sur Linux, bien que ce ne soit pas un problème.

6
répondu Dmitry 2015-10-11 10:54:27

rpc = c plus plus et il est donc mon préféré, qu'est-cc ou cxx?

5
répondu Andrew 2009-10-09 17:28:06

The .cc extension est nécessaire pour utiliser des règles implicites dans les makefiles. Regardez à travers ces liens pour obtenir une meilleure compréhension des makefiles, mais regardez principalement le second, car il indique clairement l'utilité de la .cc extension:

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 ça.

4
répondu Kyle 2017-05-30 08:53:55