768 Stimmen

C++ Code Dateierweiterung? Was ist der Unterschied zwischen .cc und .cpp

Ich habe C++-Code gesehen, der sowohl als .cc et .cpp Dateien. Gibt es einen Unterschied zwischen diesen beiden?

があります。 Google Style Guide scheint darauf hinzudeuten .cc , liefert aber keine Erklärung.

Ich beschäftige mich hauptsächlich mit Programmen auf Linux-Systemen.

151 Stimmen

Schlussfolgerung Das spielt keine Rolle. Mögliche Herkunft cc = C mit Klassen, cpp = C plus plus

12 Stimmen

Das ist wichtig für Clang++. Wenn Sie ihm eine C++-Header-Datei mit einem Namen geben, der auf .h endet, warnt clang++ Sie.

8 Stimmen

Ein weiteres Werkzeug, das sich ein wenig kümmert, ist emacs. Mit einer sauberen .emacs-Konfiguration aktiviert das Öffnen ("Finden" in der emacs-Sprache) einer .h-Datei den c-Modus, nicht den c++-Modus. Natürlich können Sie emacs so konfigurieren, dass er etwas anderes macht (wie alles in emacs), aber ich will damit sagen, dass der c-Modus die Standardeinstellung ist.

8voto

Dmitry Punkte 6430

Es spielt keine Rolle, welche dieser Erweiterungen Sie verwenden würden. Suchen Sie sich die aus, die Ihnen am besten gefällt, und bleiben Sie bei der Namensgebung konsequent. Die einzige Ausnahme, die mir bei dieser Namenskonvention bekannt ist, besteht darin, dass ich nicht in der Lage war, die WinDDK (oder ist es WDK jetzt?) zu kompilieren .cc Dateien. Unter Linux ist das allerdings kaum ein Problem.

7voto

Armorix Punkte 41

Ich beginne ein neues C++-Projekt und bin auf der Suche nach dem neuesten C++-Stil. Ich bin hier gelandet, als es um die Benennung von Dateien ging, und ich dachte, ich würde Ihnen mitteilen, wie ich zu meiner Wahl gekommen bin. So geht's:

Stroustrup sieht dies eher als eher eine geschäftliche als eine technische Überlegung .

Folgen wir seinem Rat und prüfen wir, was die Toolchains erwarten.

Für UNIX/Linux können Sie die folgenden Standard-GNU-Make-Regeln so interpretieren, dass sie die .cc-Dateinamensendung bevorzugen, da die .cpp- und .C-Regeln nur Aliasnamen sind:

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

(Hinweis: Es gibt keinen Standard-Alias COMPILE.cxx)

Wenn Sie also auf UNIX/Linux abzielen, sind sowohl .cc als auch .cpp sehr gute Optionen.

Wenn Sie auf Windows abzielen, suchen Sie nach Problemen mit .C, da das Dateisystem Groß- und Kleinschreibung nicht berücksichtigt. Und es könnte wichtig sein, zu beachten, dass Visual Studio bevorzugt die Endung .cpp

Wenn Sie auf macOS zielen, beachten Sie, dass Xcode .cpp/.hpp bevorzugt (gerade auf Xcode 10.1 überprüft). Sie können die Header-Vorlage jederzeit ändern, um .h zu verwenden.

Sie können sich bei Ihrer Entscheidung auch auf die von Ihnen bevorzugten Codebasen stützen. Google verwendet .cc und LLVM libc++ verwendet zum Beispiel .cpp.

Was ist mit Header-Dateien? Sie werden im Kontext einer C- oder C++-Datei kompiliert, so dass kein Compiler oder Build-System zwischen .h und .hpp unterscheiden muss. Die Syntaxhervorhebung und die automatische Einrückung durch Ihren Editor/IDE können jedoch ein Problem darstellen, aber das lässt sich beheben, indem alle .h-Dateien mit einem C++-Modus verknüpft werden. Meine emacs-Konfiguration unter Linux lädt zum Beispiel alle .h-Dateien im C++-Modus und bearbeitet C-Header problemlos. Darüber hinaus können Sie beim Mischen von C und C++ folgendermaßen vorgehen Beratung .

Mein persönliches Fazit : .cpp/.h ist der Weg des geringsten Widerstands.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X