it-swarm.com.de

C++ - Code-Dateierweiterung? .cc vs .cpp

Ich habe gesehen, dass C++ - Code als .cc- und .cpp-Dateien gespeichert wurde. Gibt es einen Unterschied zwischen den beiden?

Der Google Style Guide scheint .cc vorzuschlagen, enthält aber keine Erklärung.

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

477
Jessica

Am Ende des Tages spielt es keine Rolle, da C++ - Compiler die Dateien in beiden Formaten verarbeiten können. Wenn es ein echtes Problem in Ihrem Team ist, werfen Sie eine Münze und machen Sie mit der eigentlichen Arbeit weiter. 

572
JaredPar

GNU GCC erkennt Folgendes 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 Fall .C in GCC von Bedeutung ist, .c ist eine C-Datei, während .C eine C++ - Datei ist (wenn Sie dem Compiler die Entscheidung überlassen, 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 anerkannten Suffixe finden Sie unter gcc.gnu.org

239
Clifford

Ein guter Ratschlag für das Makefile und andere Tools. Wenn Sie nicht-Compiler-Tools in Betracht ziehen und entscheiden, welche Erweiterung verwendet werden soll, ist dies ein guter Ansatz, um eine für Sie passende Antwort zu finden.

Ich wollte nur Folgendes hinzufügen, um bei einigen .cc vs .cpp-Informationen zu helfen, die ich gefunden habe. Die folgenden Erweiterungen sind in verschiedene Umgebungen unterteilt (aus dem Buch "C++ Primer Plus"):

Unix verwendet: .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 verwendet: .cpp, .cp, .cc, .cxx, .c++

Die verschiedenen Umgebungen unterstützen unterschiedliche Erweiterungen. Auch ich wollte diese Frage beantworten und fand diesen Beitrag. Basierend auf diesem Post, denke ich, könnte ich mit .hpp und .cpp gehen, um die plattformübergreifende/werkzeugübergreifende Erkennung zu erleichtern. 

163
John S.

Soweit ich weiß, ist .cpp die empfohlene Erweiterung für C++. Einige Leute empfehlen sogar die Verwendung von .hpp für C++ - Header, nur um C zu unterscheiden.

Obwohl es dem Compiler egal ist, was Sie tun, ist es seine persönliche Präferenz.

66
Ryu

Ich persönlich benutze die Erweiterung .cc für Implementierungsdateien, .hh für Header und .inl für Inline/Templates.

Wie gesagt, es ist hauptsächlich Geschmackssache.

Nach allem, was ich gesehen habe, scheint .cc eher "open source projects orientiert" zu sein, da es in einigen großen Open-Source-Software-Codierstilen empfohlen wird, während .cpp mehr Windowish ist.

--- 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, .cpp und viele Open-Source-Projekte (die sind hauptsächlich für Unix-Likes) .cc.

Beispiele für Codierungsstile mit .cc:

27
NewbiZ

Weitere Dateierweiterungen sind .cxx und .C (Großbuchstabe C). Ich glaube, Bjarne Stroustrup verwendete ursprünglich .C. .cpp ist der Name des C-Präprozessors, daher ist es bedauerlich, dass er auch für C++ verwendet wurde.

16
user181548

Folgen Sie einfach der Konvention, die von Ihrem Projekt/Team verwendet wird.

11
Ben S

Die andere Option ist .cxx, wobei die x ein um 45 ° gedrehtes Plus sein soll. 

Windows, Mac und Linux unterstützen .c++, also sollten wir das nur verwenden.

11
Roland Rabien

Ich persönlich habe .cc nie in einem Projekt gesehen, an dem ich gearbeitet habe, aber in aller Technik ist dem Compiler egal. 

Wen es interessiert, sind die Entwickler, die an Ihrer Quelle arbeiten, also meine Faustregel ist, zu dem zu gehen, was Ihr Team gut tut. Wenn Ihr "Team" die Open-Source-Community ist, gehen Sie auf etwas sehr Übliches, von dem .cpp der Favorit zu sein scheint.

9
Toji

Mehrere Leute sagen, .cc steht für nichts? Es könnte. C++ begann als "C mit Klassen".

Richtig, dass .cc und .cpp auf den meisten Unix-Systemen auch Befehlsnamen sind (c-Compiler und c-Präprozessor).

Ich benutze ausschließlich .cpp, aber ich habe unter Windows angefangen. .cc ist eher eine Unix-Konvention, obwohl ich selbst dort weniger und weniger sehe. GNU make hat Regeln für .cpp. Das wird wahrscheinlich bevorzugt. Es funktioniert standardmäßig sowohl unter Windows als auch unter allen anderen. Auf der anderen Seite verwendet modernes C++ überhaupt keine Erweiterung für Header, das gefällt mir wirklich nicht. Alle meine Projekte verwenden .h für Headerdateien, und sie unterstützen sowohl C als auch C++ so weit wie möglich über extern "C" und Testing __cplusplus.

9
Ben Voigt

Es ist egal, welche dieser Erweiterungen Sie verwenden würden. Wählen Sie aus, was Ihnen mehr gefällt, halten Sie sich nur an die Namensgebung. Die einzige Ausnahme, die mir bei dieser Namenskonvention bekannt ist, ist, dass ich WinDDK nicht erstellen konnte (oder ist es WDK jetzt?), .cc-Dateien zu kompilieren. Unter Linux ist das jedoch kein Problem.

8
Dmitry

.C und .cc scheinen Standard für die (wenigen) Unix-orientierten C++ - Programme zu sein, die ich gesehen habe. Ich habe .cpp immer selbst verwendet, da ich nur wirklich unter Windows arbeite und das ist seit jeher der Standard.

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 wenn sich diese Begründung als unzureichend erweist, sind andere wichtige Dinge die Nichtbenutzung der Umschalttaste (was .C und .c++ ausschließt) und die Vermeidung regulärer Ausdrucks-Metazeichen, wo dies möglich ist (was ausgeschlossen ist) .c++ - den . können Sie leider nicht wirklich umgehen.). 

Dies schließt .cc nicht aus. Obwohl es nicht wirklich für etwas steht (oder nicht?), Ist es wahrscheinlich eine gute Wahl für Linux-orientierten Code.

7

Ich habe .C und .h als Quelle bzw. Header verwendet. Eine schöne Sache mit dieser Wahl ist, dass es in der Befehlszeile einfach ist, *.[Ch] zu verwenden, um alle Codedateien auszuwählen. Die Verwendung von .C könnte ein Problem für Dateisysteme sein, bei denen die Groß-/Kleinschreibung nicht beachtet wird. Wenn Sie foo.c und foo.C im selben Verzeichnis haben, haben Sie das verdient, was Sie trotzdem bekommen :)

7
KeithB

Wie bei den meisten Stilkonventionen spielen nur zwei Dinge eine Rolle:

  1. Seien Sie konsequent in dem, was Sie verwenden, wo immer dies möglich ist.
  2. Entwerfen Sie nichts, das von einer bestimmten Wahl abhängt.

Das mag widersprechen, aber jeder hat seinen eigenen Wert.

7
Alan

cpp = c plus plus und so ist es mir lieber, wofür steht cc oder cxx?

6
Andrew

Die Erweiterung .cc ist für die Verwendung impliziter Regeln in Makefiles erforderlich. Durchsuchen Sie diese Links, um ein besseres Verständnis von Makefiles zu erhalten. Schauen Sie sich jedoch hauptsächlich die zweite an, da dies eindeutig den Nutzen der Erweiterung .cc angibt:

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 jetzt davon erfahren.

6
Kyle

Ich starte ein neues C++ - Projekt und suche nach dem neuesten C++ - Stil. Ich bin wegen der Dateinamen hier gelandet und dachte, ich könnte mitteilen, wie ich meine Wahl getroffen habe. Hier geht:

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

Folgen Sie seinem Rat und lassen Sie uns überprüfen, was die Toolchains erwarten.

Für UNIX/Linux können Sie die folgenden Standardregeln für GNU so interpretieren, dass sie das .cc-Dateinamensuffix favorisieren, da .cpp- und .C-Regeln nur Aliase 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 Standardalias COMPILE.cxx.)

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

Wenn Sie auf Windows zielen, suchen Sie nach Problemen mit .C, da das Dateisystem die Groß- und Kleinschreibung nicht berücksichtigt. Es kann wichtig sein, dass Sie Folgendes beachten: Visual Studio bevorzugt das .cpp-Suffix

Beachten Sie beim Targeting von macOS, dass Xcode .cpp/.hpp bevorzugt (wurde gerade in Xcode 10.1 geprüft). 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 Codebasis 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 es für Compiler oder Build-Systeme nicht erforderlich ist, .h von .hpp zu unterscheiden. Syntax-Hervorhebung und automatische Einrückung durch Ihren Editor/Ihre IDE können jedoch ein Problem sein. Dies wird jedoch dadurch behoben, dass alle .h-Dateien einem C++ - Modus zugeordnet werden. Zum Beispiel lädt meine emacs config unter Linux alle .h-Dateien im C++ - Modus und bearbeitet C-Header problemlos. Darüber hinaus können Sie beim Mischen von C und C++ diesem Hinweis folgen.

Meine persönliche Schlussfolgerung: .cpp/.h ist der Weg des geringsten Widerstands.

0
Armorix

CCist die Erweiterung für die Quellcodedatei, die in den C++ - Programmen verwendet wird. Diese CC-Dateien können mit verschiedenen Texteditoren bearbeitet werden, sind jedoch nicht lesbar.

0
Sanjay Selvaraj