Ich habe gesehen, dass C ++ - Code sowohl als auch .cc
als .cpp
Dateien gespeichert wurde. Gibt es einen Unterschied zwischen den beiden?
Der Google Style Guide scheint dies vorzuschlagen .cc
, bietet jedoch keine Erklärung.
Ich beschäftige mich hauptsächlich mit Programmen auf Linux-Systemen.
lint
kümmert sich,.C
ist C ++ und.c
ist C ohne jegliches Verständnis von.cc
oder.cpp
. Zumindest unter AIX 6.1..cc
.Antworten:
Letztendlich spielt es keine Rolle, da C ++ - Compiler mit den Dateien in beiden Formaten umgehen können. Wenn es ein echtes Problem in Ihrem Team ist, werfen Sie eine Münze und fahren Sie mit der eigentlichen Arbeit fort.
quelle
GNU GCC erkennt alle folgenden Dateien als C ++ - Dateien und verwendet die C ++ - Kompilierung, unabhängig davon, ob Sie sie über gcc oder g ++ aufrufen:
.C
,.cc
,.cpp
,.CPP
,.c++
,.cp
, oder.cxx
.Beachten Sie, dass der
.C
Fall in GCC.c
eine C-Datei ist, während.C
es sich um eine C ++ - Datei handelt (wenn Sie den Compiler entscheiden lassen, was er kompiliert).GCC unterstützt auch andere Suffixe, um auf eine spezielle Behandlung hinzuweisen. Beispielsweise wird eine
.ii
Datei als C ++ kompiliert, jedoch nicht vorverarbeitet (für separat vorverarbeiteten Code vorgesehen). Alle erkannten Suffixe finden Sie unter gcc.gnu.orgquelle
Hervorragende Ratschläge zur Verwendung für das Makefile und andere Tools, unter Berücksichtigung von Nicht-Compiler-Tools bei der Entscheidung, welche Erweiterung verwendet werden soll, sind ein guter Ansatz, um eine Antwort zu finden, die für Sie funktioniert.
Ich wollte nur Folgendes hinzufügen, um bei einigen zu helfen
.cc
vs-.cpp
Informationen , die ich gefunden habe. Die folgenden Erweiterungen sind nach verschiedenen Umgebungen unterteilt (aus dem Buch "C ++ Primer Plus"):Unix Anwendungen:
.C
,.cc
,.cxx
,.c
GNU C ++ verwendet:
.C
,.cc
,.cxx
,.cpp
,.c++
Digital Mars verwendet:
.cpp
,.cxx
Borland C ++ verwendet:
.cpp
Watcom verwendet:
.cpp
Microsoft Visual C ++ verwendet :
.cpp
,.cxx
,.cc
Metrowerks Codewarrior Verwendungen:
.cpp
,.cp
,.cc
,.cxx
,.c++
Die verschiedenen Umgebungen unterstützen verschiedene Erweiterungen. Auch ich wollte diese Frage beantworten und habe diesen Beitrag gefunden. Basierend auf diesem Beitrag denke ich, dass ich mit
.hpp
und.cpp
zur Erleichterung der plattformübergreifenden / werkzeugübergreifenden Erkennung gehen könnte.quelle
.cpp
?.cpp
für C ++ - Quelldateien verwendet wird. (In der zitierten Antwort wird darauf hingewiesen, dass "cpp" die Abkürzung für den C-Präprozessor ist.).cpp
ist meines Wissens die empfohlene Erweiterung für C ++. Einige Leute empfehlen sogar die Verwendung.hpp
für C ++ - Header, nur um sich von C zu unterscheiden.Obwohl es dem Compiler egal ist, was Sie tun, ist es seine persönliche Präferenz.
quelle
Ich persönlich verwende die
.cc
Erweiterung für Implementierungsdateien,.hh
für Header und.inl
für Inline / Vorlagen.Wie gesagt, es ist hauptsächlich Geschmackssache.
Nach allem , was ich gesehen habe ,
.cc
scheint es eher " Open Source-Projekte" zu sein " zu sein, wie es in einigen großartigen Open Source-Software-Codierungsstilen empfohlen wird.cpp
scheint eher fensterisch zu sein.--- BEARBEITEN
Wie bereits erwähnt, ist dies "von dem, was ich gesehen habe" , es kann falsch sein. Es ist nur so, dass alle Windows-Projekte, an denen ich gearbeitet habe, verwendet
.cpp
werden und viele Open-Source-Projekte (die hauptsächlich auf Unix-Likes basieren) verwendet werden.cc
.Beispiele für Codierungsstile mit
.cc
:quelle
-*- C++ -*-
Tag in die Header llvm.org/docs/CodingStandards.html einzufügen . Mozilla Coding Style schlägt vor .cpp / .h developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/… ; KDE scheint .cpp / .h zu quickgit.kde.orgAndere verwendete Dateierweiterungen sind
.cxx
und.C
(Großbuchstabe C). Ich glaube, Bjarne Stroustrup hat.C
ursprünglich verwendet..cpp
ist der Name des C-Präprozessors, daher ist es bedauerlich, dass er auch für C ++ verwendet wurde.quelle
Die andere Option ist,
.cxx
wo dasx
Plus um 45 ° gedreht werden soll.Windows, Mac und Linux unterstützen alle,
.c++
also sollten wir das einfach verwenden.quelle
Mehrere Leute sagen
.cc
, steht für nichts? Es könnte. C ++ begann sein Leben als "C mit Klassen".Stimmt das
.cc
und.cpp
sind auch Befehlsnamen auf den meisten Unix-Systemen (c-Compiler bzw. c-Präprozessor).Ich benutze
.cpp
ausschließlich, aber ich habe unter Windows gestartet..cc
ist eher eine Unix-Konvention, obwohl ich sie selbst dort immer weniger sehe. GNU make hat Regeln für das.cpp
, was wahrscheinlich bevorzugt wird. Es funktioniert standardmäßig sowohl unter Windows als auch unter allem anderen. Andererseits verwendet modernes C ++ überhaupt keine Erweiterung für Header, das gefällt mir wirklich nicht. Alle meine Projekte werden.h
für Header-Dateien verwendet und unterstützen sowohl C als auch C ++ so weit wie möglich überextern "C"
und testen__cplusplus
.quelle
Befolgen Sie einfach die Konvention, für die das Projekt / Team verwendet wird.
quelle
Ich persönlich habe noch nie
.cc
in einem Projekt gesehen, an dem ich gearbeitet habe, aber technisch gesehen ist es dem Compiler egal.Wen es interessiert, sind die Entwickler, die an Ihrer Quelle arbeiten. Meine Faustregel lautet also, mit dem zu arbeiten, mit dem Ihr Team vertraut ist. Wenn Ihr "Team" die Open-Source-Community ist, wählen Sie etwas sehr Gemeinsames, von dem
.cpp
der Favorit zu sein scheint.quelle
.cc
als Dateierweiterung für C ++ - ImplementierungsdateienWie bei den meisten Stilkonventionen sind nur zwei Dinge wichtig:
Diese scheinen sich zu widersprechen, aber sie haben jeweils aus ihren eigenen Gründen einen Wert.
quelle
.C
und.cc
scheinen Standard für die (wenigen) Unix-orientierten C ++ - Programme zu sein, die ich gesehen habe. Ich habe.cpp
mich immer selbst benutzt, da ich nur wirklich unter Windows arbeite und das dort seit wie immer der Standard ist.Ich empfehle
.cpp
persönlich, weil ... es für "C Plus Plus" steht. Es ist natürlich von entscheidender Bedeutung, dass Dateierweiterungen Akronyme sind, aber sollte sich diese Begründung als unzureichend zwingend erweisen, sind andere wichtige Dinge die Nichtverwendung der Umschalttaste (die ausschließt.C
und.c++
) und die Vermeidung von Metazeichen für reguläre Ausdrücke, wenn möglich (welche ausschließen.c++
- das kann man leider.
natürlich nicht wirklich vermeiden .).Dies schließt nicht aus
.cc
, und obwohl es nicht wirklich für irgendetwas steht (oder?), Ist es wahrscheinlich eine gute Wahl für Linux-orientierten Code.quelle
Ich habe .C und .h für Quelle bzw. Header verwendet. Eine schöne Sache bei dieser Auswahl ist, dass es in der Befehlszeile einfach ist
*.[Ch]
, alle Codedateien auszuwählen. Mit Hilfe.C
könnte ein Problem auf Groß- und Kleinschreibung Dateisystemen sein, aber wenn Sie habenfoo.c
undfoo.C
im gleichen Verzeichnis, Sie verdienen , was bekommt man sowieso :)quelle
Die Erweiterung .cc ist erforderlich, um implizite Regeln in Makefiles zu verwenden. Schauen Sie sich diese Links an, um ein besseres Verständnis der Makefiles zu erhalten, aber schauen Sie sich hauptsächlich die zweite an, da sie die Nützlichkeit der Erweiterung .cc deutlich macht:
ftp://ftp.gnu.org/old-gnu/Manuals/make-3.79.1/html_chapter/make_2.html
https://ftp.gnu.org/old-gnu/Manuals/make-3.79.1/html_chapter/make_10.html
Ich habe gerade davon erfahren.
quelle
.cpp
Dateien. Keine Sorge ! :-).C
kann auf Systemen mit Dateisystemen ohne Berücksichtigung der Groß- und Kleinschreibung problematisch sein. Ich glaube nicht , dass es irgendwelche besonderen Vorteil, soweitmake
betroffen ist, bei der Verwendung.cc
über.cpp
, zum Beispiel. Makefiles funktionieren einwandfrei.cpp
für C ++ - Quelldateien.Es spielt keine Rolle, welche dieser Erweiterungen Sie verwenden würden. Wählen Sie aus, was Ihnen besser gefällt, und stimmen Sie einfach mit der Benennung überein. Die einzige Ausnahme, die mir bei dieser Namenskonvention bekannt ist, ist, dass ich sie nicht machen konnte
WinDDK
DateienWDK
kompilieren (oder jetzt?).cc
. Unter Linux ist das allerdings kaum ein Problem.quelle
Ich starte ein neues C ++ - Projekt und suche nach dem neuesten C ++ - Stil. Ich bin hier in Bezug auf die Benennung von Dateien gelandet und dachte, ich würde mitteilen, wie ich zu meiner Wahl gekommen bin. Hier geht:
Stroustrup sieht dies eher als geschäftliche als als technische Überlegung an .
Lassen Sie uns nach seinem Rat überprüfen, was die Toolchains erwarten.
Unter UNIX / Linux können Sie die folgenden Standard-GNU-Make-Regeln so interpretieren, dass sie das .cc-Dateinamensuffix bevorzugen, da .cpp- und .C-Regeln nur Aliase sind:
(Hinweis: Es gibt keinen Standardalias für 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 nicht zwischen Groß- und Kleinschreibung unterscheidet. Und es kann wichtig sein, dass Sie das beachten Visual Studio das Suffix .cpp bevorzugt
Beachten Sie beim Targeting von macOS, dass Xcode .cpp / .hpp bevorzugt (nur in Xcode 10.1 aktiviert). Sie können die Header-Vorlage jederzeit ändern, um .h zu verwenden.
Für das, was es wert ist, können Sie Ihre Entscheidung auch auf die Codebasen stützen, die Sie mögen. Google verwendet .cc und LLVM libc ++ verwendet beispielsweise .cpp.
Was ist mit Header-Dateien? Sie werden im Kontext einer C- oder C ++ - Datei kompiliert, sodass kein Compiler oder Build-System zwischen .h und .hpp unterscheiden muss. Das Hervorheben der Syntax und das automatische Einrücken durch Ihren Editor / Ihre IDE können jedoch ein Problem sein. Dies wird jedoch behoben, indem alle .h-Dateien einem C ++ - Modus zugeordnet werden. Als Beispiel lädt meine emacs-Konfiguration unter Linux alle .h-Dateien im C ++ - Modus und bearbeitet C-Header einwandfrei. Darüber hinaus können Sie beim Mischen von C und C ++ diesen Rat befolgen .
quelle
Wie andere vor mir geschrieben haben, wird es am Ende von Ihrem Projekt / Team / Unternehmen verwendet.
Persönlich verwende ich keine
cc
Erweiterung, ich versuche, die Anzahl der Erweiterungen zu verringern und nicht zu erhöhen, es sei denn, es gibt einen eindeutigen Wert (meiner Meinung nach).Für was es wert ist, ist das, was ich benutze :
c
- Nur reiner C-Code, keine Klassen oder Strukturen mit Methoden.cpp
- C ++ - Codehpp
- Nur Header-Code. Implementierungen befinden sich in den Headern (wie Vorlagenklassen).h
- Header-Dateien für C / C ++. Ich bin damit einverstanden, dass eine andere Unterscheidung getroffen werden kann, aber während ich schrieb, versuche ich der Einfachheit halber, die Anzahl der Erweiterungen zu verringern. Zumindest aus den C ++ - Projekten, in denen ich gearbeitet habe, sindh
Dateien für Pure-C seltener, daher wollte ich keine weitere Erweiterung hinzufügen.quelle