.cc ou .cpp : quelle extension choisir pour le code C++ ?

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction : Un langage, des dizaines d'extensions

\n\n

Si vous commencez tout juste à apprendre le C++, vous avez sûrement déjà rencontré cette situation : vous regardez un tutoriel ou un exemple de code sur GitHub, et les fichiers s'appellent tantôt main.cpp, tantôt utils.cc, et parfois même program.cxx ou source.C. Une question légitime se pose : "Quelle est la différence ? S'agit-il de langages différents ? Ou simplement d'un caprice de quelqu'un ?"

\n\n

Vous n'êtes pas seul. Sur Stack Overflow, la question "C++ code file extension? What is the difference between .cc and .cpp" a recueilli des centaines de milliers de vues. Et ce n'est pas surprenant : même les développeurs expérimentés se trompent parfois sur ces détails apparemment insignifiants. Aujourd'hui, nous allons une fois pour toutes démêler cette énigme. Vous découvrirez d'où viennent ces différentes extensions, s'il existe une différence technique entre elles et quelle extension un débutant devrait choisir.

\n\n

Réponse courte : aucune différence technique

\n\n

Dissipons tout de suite la principale tension. Du point de vue du compilateur et du langage C++, il n'y a absolument aucune différence entre .cc et .cpp. Ce sont simplement deux manières différentes d'indiquer au système d'exploitation et aux outils de compilation qu'il s'agit de code source C++.

\n\n

Les compilateurs (GCC, Clang, MSVC) comprennent les deux extensions. Vous pouvez prendre un fichier hello.cc, le renommer en hello.cpp et le compiler sans aucune modification du code. Voici un exemple simple :

\n\n
// Fichier : hello.cc\n#include <iostream>\n\nint main() {\n    std::cout << "Bonjour depuis le fichier .cc !" << std::endl;\n    return 0;\n}
\n\n

Vous pouvez le compiler ainsi :

\n
g++ hello.cc -o hello
\n\n

Et maintenant, renommons-le en hello.cpp :

\n
g++ hello.cpp -o hello
\n\n

Le résultat sera identique. Le compilateur se moque du nom du fichier — seuls son contenu et le fait que vous ayez explicitement spécifié le langage (ou que le compilateur l'ait déduit de l'extension) importent.

\n\n

Origine historique : d'où viennent .cc et .cpp ?

\n\n

Pour comprendre pourquoi il existe autant d'extensions, il faut se pencher sur l'histoire. Le C++ a été créé comme une extension du langage C. Les premiers compilateurs (par exemple, Cfront) n'étaient que des préprocesseurs qui traduisaient le C++ en C standard.

\n\n

L'extension .cc — héritage Unix

\n

Dans les systèmes d'exploitation de la famille Unix (et en particulier dans les premières versions d'AT&T Unix), la tradition était d'utiliser des extensions courtes, à deux caractères. Cela était dû aux limitations des systèmes de fichiers : par exemple, dans s5fs (System V), la longueur des noms de fichiers était fortement restreinte. Ainsi sont apparus :

\n
    \n
  • .c — pour les fichiers C
  • \n
  • .cc — pour les fichiers C++ (C + C = CC)
  • \n
  • .h — pour les fichiers d'en-tête
  • \n
\n

L'extension .cc est devenue la norme de facto dans le monde Unix et Linux. De nombreux grands projets (par exemple, Google Chromium, LLVM) l'utilisent encore aujourd'hui.

\n\n

L'extension .cpp — l'ère DOS et Windows

\n

Lorsque le C++ a commencé à gagner en popularité dans le monde PC, l'écosystème DOS et des premières versions de Windows est apparu. Les limitations y étaient différentes, mais un autre besoin s'est fait sentir : rendre l'extension aussi claire que possible. .cpp signifie C Plus Plus — une indication directe du langage. Cette extension est devenue populaire grâce à :

\n
    \n
  • L'environnement de développement Borland C++
  • \n
  • Microsoft Visual C++
  • \n
  • Les tutoriels et livres sur le C++ (pour que les débutants comprennent immédiatement de quoi il s'agit)
  • \n
\n\n

Autres extensions voyageuses

\n

Outre les deux principaux prétendants, on peut rencontrer d'autres extensions dans le monde du C++ :

\n
    \n
  • .cxx — une autre variante de "C++", populaire dans certains systèmes Unix (par exemple, IBM AIX)
  • \n
  • .C (C majuscule) — utilisée par certains compilateurs pour distinguer le C (.c) du C++ (.C) sur les systèmes où la casse est significative (par exemple, dans les anciens

Blogs

Book Recommendations