.cc oder .cpp: Welche Erweiterung für C++-Code wählen?

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einleitung: Eine Sprache – Dutzende Erweiterungen

\n\n

Wenn Sie gerade erst anfangen, C++ zu lernen, sind Sie bestimmt schon auf folgende Situation gestoßen: Sie schauen sich ein Tutorial oder ein Codebeispiel auf GitHub an und dort heißen die Dateien mal main.cpp, mal utils.cc und manchmal sogar program.cxx oder source.C. Da stellt sich die berechtigte Frage: "Wo ist da der Unterschied? Sind das verschiedene Sprachen? Oder nur eine Marotte von jemandem?"

\n\n

Sie sind nicht allein. Auf Stack Overflow hat die Frage "C++ code file extension? What is the difference between .cc and .cpp" Hunderttausende von Aufrufen gesammelt. Und das ist nicht verwunderlich: Selbst erfahrene Entwickler sind manchmal verwirrt über diese scheinbaren Kleinigkeiten. Heute werden wir dieses Rätsel ein für alle Mal lösen. Sie erfahren, woher die verschiedenen Erweiterungen kommen, ob es einen technischen Unterschied gibt und welche Erweiterung ein Anfänger wählen sollte.

\n\n

Kurze Antwort: Es gibt keinen technischen Unterschied

\n\n

Lassen Sie uns gleich die wichtigste Spannung nehmen. Aus Sicht des Compilers und der Sprache C++ gibt es absolut keinen Unterschied zwischen .cc und .cpp. Es sind einfach zwei verschiedene Arten, dem Betriebssystem und den Build-Tools mitzuteilen, dass es sich um C++-Quellcode handelt.

\n\n

Die Compiler (GCC, Clang, MSVC) verstehen beide Erweiterungen. Sie können eine Datei hello.cc nehmen, sie in hello.cpp umbenennen und ohne eine einzige Änderung am Code kompilieren. Hier ist ein einfaches Beispiel:

\n\n
// Datei: hello.cc\n#include <iostream>\n\nint main() {\n    std::cout << "Hallo aus der .cc-Datei!" << std::endl;\n    return 0;\n}
\n\n

Sie können es so kompilieren:

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

Und jetzt benennen wir es in hello.cpp um:

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

Das Ergebnis wird identisch sein. Dem Compiler ist es egal, wie die Datei heißt – wichtig ist nur ihr Inhalt und dass Sie die Sprache explizit angegeben haben (oder der Compiler sie anhand der Erweiterung erraten hat).

\n\n

Herkunftsgeschichte: Woher kommen .cc und .cpp?

\n\n

Um zu verstehen, warum es so viele Erweiterungen gibt, müssen wir einen Blick in die Geschichte werfen. C++ wurde als Erweiterung der Sprache C entwickelt. Die ersten Compiler (z. B. Cfront) waren lediglich Präprozessoren, die C++ in gewöhnliches C übersetzten.

\n\n

Die Erweiterung .cc – Unix-Erbe

\n

In Betriebssystemen der Unix-Familie (und insbesondere in frühen Versionen von AT&T Unix) war es Tradition, kurze, zweistellige Erweiterungen zu verwenden. Dies hing mit den Beschränkungen der Dateisysteme zusammen: Beispielsweise war in s5fs (System V) die Länge von Dateinamen stark eingeschränkt. So entstanden:

\n
    \n
  • .c – für C-Dateien
  • \n
  • .cc – für C++-Dateien (C + C = CC)
  • \n
  • .h – für Header-Dateien
  • \n
\n

Die Erweiterung .cc wurde zum De-facto-Standard in der Unix- und Linux-Welt. Viele große Projekte (z. B. Google Chromium, LLVM) verwenden sie bis heute.

\n\n

Die Erweiterung .cpp – Die Ära von DOS und Windows

\n

Als C++ in der PC-Welt an Popularität gewann, entstand das Ökosystem von DOS und frühen Windows-Versionen. Hier gab es andere Einschränkungen, aber es entstand ein anderes Bedürfnis – die Erweiterung so verständlich wie möglich zu machen. .cpp steht für C Plus Plus – ein direkter Hinweis auf die Sprache. Diese Erweiterung wurde populär durch:

\n
    \n
  • Die Entwicklungsumgebung Borland C++
  • \n
  • Microsoft Visual C++
  • \n
  • Lehrbücher und Bücher über C++ (damit Anfänger sofort verstehen, womit sie es zu tun haben)
  • \n
\n\n

Andere reisende Erweiterungen

\n

Neben den beiden Hauptkandidaten gibt es in der C++-Welt noch andere Erweiterungen:

\n
    \n
  • .cxx – eine weitere Variante von "C++", beliebt in einigen Unix-Systemen (z. B. IBM AIX)
  • \n
  • .C (großes C) – wird von einigen Compilern verwendet, um C (.c) und C++ (.C) auf Systemen zu unterscheiden, bei denen die Groß-/Kleinschreibung eine Rolle spielt (z. B. in alten

Blogs

Buchempfehlungen