HOWTO · C++
Unterschied zwischen .cc- und .cpp-Dateierweiterungen in C++
Erfahren Sie, wie Sie zwischen den C++-Quellcode-Endungen .cc und .cpp wählen, beide mit GCC kompilieren und Probleme beim Umbenennen vermeiden.
Auf dieser Seite
Für gewöhnliche C++-Quellcode-Dateien sind .cc und .cpp Namenskonventionen, keine unterschiedlichen C++-Sprachen. Verwenden Sie die Endung, die im Projekt oder in dessen Build-Werkzeugen bereits üblich ist; in einem neuen Projekt wählen Sie eine und bleiben dabei. GCC erkennt beide Endungen als C++-Eingaben.
Beide Endungen mit GCC kompilieren
Speichern Sie dieses Programm als main.cc oder als main.cpp:
#include <iostream>
int main() { std::cout << "C++\n"; }
Kompilieren und starten Sie beide Dateinamen mit g++:
g++ -std=c++23 main.cc -o cc.out && ./cc.out
g++ -std=c++23 main.cpp -o cpp.out && ./cpp.out
Beide Befehle geben Folgendes aus:
C++
Dieses Ergebnis wurde unter Linux mit g++ (Ubuntu 15.2.0-16ubuntu1) 15.2.0 geprüft. Die GCC-Dokumentation zu den allgemeinen Optionen führt .cc und .cpp als C++-Quellcode-Endungen auf. Das Beispiel benötigt GCC/g++ mit C++23-Unterstützung; verwenden Sie bei Bedarf den Sprachstandard des Projekts.
Was die Endung ändert
Die Endung hilft einem Compiler-Treiber oder Build-Werkzeug, eine Eingabedatei einzuordnen. Sie macht den Inhalt einer Datei nicht zu einer anderen Variante von C++. Eine .cc- oder .cpp-Datei kann ein vollständiges Programm, Funktionen oder Implementierungscode zu Deklarationen in einem Header enthalten. Weder Header noch Klassen sind für eine der beiden Endungen erforderlich.
Der C++-Standard schreibt keine bestimmte Dateiendung vor. Die Erkennungsregeln stammen von Compiler-Treibern und Werkzeugen. Daher ist die Konvention eines vorhandenen Repositorys wichtiger als eine pauschale Zuordnung zu einem Betriebssystem.
.cc oder .cpp im Projekt wählen
| Situation | Praktische Wahl |
|---|---|
| Repository und Build-Dateien verwenden bereits eine Endung | Folgen Sie dieser Endung. |
Eine Projektregel verlangt .cc |
Verwenden Sie .cc; der Google C++ Style Guide schreibt beispielsweise .cc für C++-Quellcode vor. |
| Ein neues Projekt hat keine Regel | Wählen Sie .cc oder .cpp und verwenden Sie die Wahl einheitlich. |
Keine der beiden Endungen ist allein deshalb portabler, weil sie mit einem bestimmten Betriebssystem verbunden wird. Prüfen Sie Compiler, IDE und Build-Konfiguration des tatsächlichen Projekts.
.c nicht als normale C++-Endung verwenden
Hier ist der Treiber entscheidend. Die allgemeine GCC-Suffix-Tabelle ordnet .c als C-Eingabe ein. Die Dokumentation des g++-Treibers besagt jedoch, dass g++ die Eingaben .c, .h und .i als C++ behandelt, sofern -x die Sprache nicht überschreibt. Auf dem geprüften Host kompilierte derselbe C++-Code auch unter dem Namen main.c:
g++ -std=c++23 main.c -o c.out && ./c.out
Die Ausgabe war C++. Dagegen schlug gcc -std=c23 main.c -o gcc-c.out bei diesem Beispiel fehl, weil der C-Treiber die Datei als C behandelte und den C++-Header iostream nicht fand.
Diese Abweichung ist ein Grund, normale C++-Quellen nicht .c zu nennen: Das Ergebnis kann vom aufgerufenen Build-Treiber abhängen. Falls Sie die Endungserkennung überschreiben müssen, akzeptiert GCC -x c++; der Clang CommandGuide dokumentiert -x zur Festlegung der Sprache für folgende Eingaben. MSVC dokumentiert /Tp, um eine benannte Datei als C++ zu behandeln. Die genaue Build-Konfiguration kann abweichen.
Beim Umbenennen den Build aktualisieren
Das Umbenennen von main.cc in main.cpp kann trotz unverändertem Code scheitern. CMake, Make-Regeln, IDE-Projektdateien, Dateimuster, erzeugte Build-Eingaben und Skripte können den alten Namen aufführen oder nur eine Endung erfassen. Aktualisieren Sie diese Verweise und bauen Sie das Projekt neu, um die Umbenennung zu prüfen.
Als nächsten Organisationsschritt lesen Sie, wie Sie mehrere C++-Codedateien verwenden.