757 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.

145 Stimmen

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

11 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.

7 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.

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.

7voto

TCS Punkte 5490

Wie schon andere vor mir geschrieben haben, kommt es am Ende darauf an, was Ihr Projekt/Team/Unternehmen nutzt.

Persönlich verwende ich nicht cc Erweiterung, ich versuche, die Zahl der Erweiterungen zu verringern und nicht zu erhöhen, es sei denn, es gibt einen klaren Wert (meiner Meinung nach).

Was auch immer es wert ist, dies ist, was Ich benutze :

c - Nur reiner C-Code, keine Klassen oder Structs mit Methoden.

cpp - C++-Code

hpp - Nur Kopfzeilen-Code. Implementierungen befinden sich in den Headern (wie Template-Klassen)

h - Header-Dateien sowohl für C/C++. Ich stimme zu, dass eine weitere Unterscheidung gemacht werden kann, aber wie ich schon schrieb, versuche ich der Einfachheit halber, die Anzahl der Erweiterungen zu verringern. Zumindest bei den C++-Projekten, an denen ich gearbeitet habe, h Dateien für Pure-C sind seltener, deshalb wollte ich keine weitere Erweiterung hinzufügen.

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