web-dev-qa-db-fra.com

Extension de fichier de code C++? .cc vs .cpp

J'ai vu le code C++ enregistré en tant que fichiers .cc et .cpp. Y a-t-il une différence entre les deux?

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

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

477
Jessica

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 problème réel au sein de votre équipe, lancez une pièce et passez au travail réel. 

572
JaredPar

GNU GCC reconnaît tous les éléments suivants en tant que fichiers C++ et utilisera la compilation C++ indépendamment du fait que vous l’appeliez via gcc ou g ++: .C, .cc, .cpp, .CPP, .c++, .cp ou .cxx.

Notez que .C - les cas sont importants dans GCC, .c est un fichier C, alors que .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 un traitement spécial, par exemple, un fichier .ii sera compilé en C++, mais pas prétraité (destiné à un code traité séparément). Tous les suffixes reconnus sont détaillés sur gcc.gnu.org

239
Clifford

Des conseils judicieux sur l'utilisation du makefile et d'autres outils, prendre en compte les outils non-compilateurs tout en décidant quelle extension utiliser est une excellente approche pour 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 réparties dans différents environnements (extraits du livre "C++ Primer Plus"):

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

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

Digital Mars utilise: .cpp, .cxx

Borland C++ utilise: .cpp

Watcom utilise: .cpp

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

Metrowerks CodeWarrior utilise: .cpp, .cp, .cc, .cxx, .c++

Les différents environnements prennent en charge différentes extensions. Moi aussi, je cherchais à répondre à cette question et à trouver ce post. Sur la base de ce post, je pense que je pourrais utiliser .hpp et .cpp pour faciliter la reconnaissance multi-plateforme/multi-outils. 

163
John S.

.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 se différencier de C.

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

66
Ryu

Personnellement, j'utilise l'extension .cc pour les fichiers d'implémentation, .hh pour les en-têtes et .inl pour les modèles/en-ligne.

Comme dit précédemment, c'est principalement une question de goût.

D'après ce que j'ai vu, .cc semble être plus "des projets open source orientés", comme le conseillent certains grands styles de codage de logiciels open source, alors que .cpp semble être plus Windowish.

--- MODIFIER

Comme mentionné précédemment, ceci est "d'après ce que j'ai vu", il se peut que ce soit une erreur . C'est juste que tous les projets Windows sur lesquels j'ai travaillé utilisaient .cpp, et beaucoup de projets open source (qui sont principalement sur unix-likes), utilisez .cc.

Exemples de styles de codage utilisant .cc:

27
NewbiZ

Les autres extensions de fichier utilisées incluent .cxx et .C (C majuscule). Je crois que Bjarne Stroustrup a utilisé .C à l'origine. .cpp est le nom du préprocesseur C, il est donc regrettable qu'il ait également été utilisé pour C++.

16
user181548

Il suffit de suivre la convention utilisée par projet/équipe.

11
Ben S

L'autre option est .cxx où la x est supposée être une rotation de plus de 45 °. 

Windows, Mac et Linux supportent tous .c++, nous devrions donc simplement l'utiliser.

11
Roland Rabien

Personnellement, je n'ai jamais vu .cc dans aucun projet sur lequel j'ai travaillé, mais, techniquement, le compilateur s'en fiche. 

Les développeurs travaillant sur votre source se soucieront de la situation. Mon principe consiste donc à choisir ce qui convient le mieux à votre équipe. Si votre "équipe" est une communauté open source, optez pour quelque chose de très courant, dont .cpp semble être le favori.

9
Toji

Plusieurs personnes disent que .cc ne représente rien? Ça pourrait. C++ a commencé sa vie en tant que "C avec des classes".

Il est vrai que .cc et .cpp sont également des noms de commande sur la plupart des systèmes Unix (compilateur c et préprocesseur c respectivement).

J'utilise exclusivement .cpp, mais j'ai démarré sous Windows. .cc est plus une convention Unix, même si je le vois de moins en moins, même là. GNU make a des règles pour .cpp donc c'est probablement préférable, cela fonctionnera par défaut sous Windows et tout le reste. D'autre part, le C++ moderne n'utilise aucune extension pour les en-têtes, je n'aime vraiment pas cela. Tous mes projets utilisent .h pour les fichiers d’en-tête et supportent autant que possible C++ et C++ via extern "C" et testing __cplusplus.

9
Ben Voigt

Peu importe laquelle de ces extensions vous utiliseriez. Choisissez celui que vous préférez, soyez cohérent avec l'attribution de nom. La seule exception que je connaisse avec cette convention de dénomination est que je ne pouvais pas faire WinDDK (ou est-ce WDK maintenant?) Pour compiler des fichiers .cc Sous Linux, cela ne pose guère de problème.

8
Dmitry

.C et .cc semblent être la norme pour les (rares) programmes C++ orientés Unix que j'ai vus. J'ai toujours utilisé .cpp moi-même, car je ne travaille que sur Windows et c'est la norme depuis toujours.

Je recommande personnellement .cpp, parce que ... il signifie "C Plus Plus". Il est bien sûr essentiel que les extensions de fichier soient des acronymes, mais si cette justification n’était pas suffisamment convaincante, la non-utilisation de la touche Maj (qui exclut .C et .c++) et l’évitement, dans la mesure du possible, .c++ - malheureusement, vous ne pouvez pas vraiment éviter le . bien sûr.). 

Ceci n'exclut pas .cc, donc même s'il ne représente pas vraiment quelque chose (ou le fait-il?), C'est probablement un bon choix pour le code orienté Linux.

7
please delete me

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. Utiliser .C pourrait poser 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 quand même :)

7
KeithB

Comme dans la plupart des conventions de style, deux choses seulement 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 spécifique utilisé.

Celles-ci peuvent sembler contredire, mais elles ont chacune une valeur pour leurs propres raisons.

7
Alan

cpp = c plus plus et donc mon préféré, que signifie cc ou cxx?

6
Andrew

L'extension .cc est nécessaire pour utiliser des règles implicites dans les makefiles. Parcourez ces liens pour mieux comprendre les fichiers makefiles, mais surtout le deuxième, 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.

6
Kyle

Je commence un nouveau projet C++ et je commence à rechercher le dernier style C++. Je me suis retrouvé ici en ce qui concerne la dénomination des fichiers et je pensais que je partagerais comment j'ai choisi mon choix. Voici:

Stroustrup le voit plus comme un { une considération commerciale que technique .

Suivant ses conseils, vérifions à quoi s'attendent les chaînes d'outils.

Pour UNIX/Linux, vous pouvez interpréter les règles de création GNU par défaut suivantes comme privilégiant le suffixe .cc, car les règles .cpp et .C ne sont que des alias:

$ make -p | egrep COMPILE[^=]+=
COMPILE.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_Arch) -c
COMPILE.cpp = $(COMPILE.cc)
COMPILE.C = $(COMPILE.cc)

(Remarque: il n'y a pas d'alias par défaut COMPILE.cxx)

Donc, si vous ciblez UNIX/Linux, les fichiers .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 ne respecte pas la casse. Et il peut être important pour vous de noter que Visual Studio privilégie le suffixe .cpp

Lors du ciblage de macOS, notez que Xcode préfère .cpp/.hpp (juste vérifié sur Xcode 10.1). Vous pouvez toujours changer 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 codes que vous aimez. Google utilise .cc et LLVM, par exemple, libc ++ utilise .cpp.

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 de compilateur ou de système de construction qui ait besoin de distinguer le .h du .hpp. La mise en évidence de la syntaxe et l'indentation automatique par votre éditeur/IDE peuvent poser problème, mais ce problème est résolu en associant tous les fichiers .h à un mode C++. Par exemple, ma configuration emacs sous Linux charge tous les fichiers .h en mode C++ et elle édite très bien les en-têtes C. Au-delà de cela, en mélangeant C et C++, vous pouvez suivre ce conseil .

Ma conclusion personnelle: .cpp/.h est la voie de la moindre résistance.

0
Armorix

CCest l'extension du fichier de code source utilisé dans les programmes c ++. Ces fichiers CC peuvent être édités à l'aide de divers éditeurs de texte, mais ils ne sont pas lisibles.

0
Sanjay Selvaraj