Widziałem kod C ++ zapisany jako pliki .cc
i .cpp
. Czy jest jakaś różnica między nimi?
Przewodnik po stylu Google wydaje się sugerować .cc
, ale nie zawiera wyjaśnień.
Zajmuję się głównie programami w systemach Linux.
Widziałem kod C ++ zapisany jako pliki .cc
i .cpp
. Czy jest jakaś różnica między nimi?
Przewodnik po stylu Google wydaje się sugerować .cc
, ale nie zawiera wyjaśnień.
Zajmuję się głównie programami w systemach Linux.
lint
obchodzi,.C
to C ++ i.c
C bez żadnego zrozumienia.cc
lub.cpp
. Przynajmniej w systemie AIX 6.1..cc
.Odpowiedzi:
Na koniec dnia nie ma to znaczenia, ponieważ kompilatory C ++ radzą sobie z plikami w dowolnym formacie. Jeśli to poważny problem w zespole, rzuć monetą i przejdź do właściwej pracy.
źródło
GNU GCC rozpoznaje wszystkie z poniższych postaci plików C ++ i C ++ użyje kompilacja niezależnie od tego, czy podniesienie go przez gcc lub g ++:
.C
,.cc
,.cpp
,.CPP
,.c++
,.cp
, lub.cxx
.Uwaga
.C
- w GCC sprawa ma znaczenie,.c
jest to plik C, podczas gdy.C
jest to plik C ++ (jeśli pozwolisz kompilatorowi zdecydować, co to jest kompilacja).GCC obsługuje także inne sufiksy wskazujące na specjalną obsługę, na przykład
.ii
plik zostanie skompilowany jako C ++, ale nie wstępnie przetworzony (przeznaczony dla osobno wstępnie przetworzonego kodu). Wszystkie rozpoznane sufiksy są wyszczególnione na gcc.gnu.orgźródło
Świetna rada, której użyć dla makefile i innych narzędzi, biorąc pod uwagę narzędzia inne niż kompilator przy podejmowaniu decyzji, które rozszerzenie do użycia jest świetnym podejściem, aby pomóc znaleźć odpowiedź, która będzie dla Ciebie odpowiednia.
Chciałem tylko dodać następujące informacje, aby pomóc w znalezieniu niektórych informacji
.cc
vs..cpp
Oto rozszerzenia w podziale na różne środowiska (z książki „C ++ Primer Plus”):Unix zastosowania:
.C
,.cc
,.cxx
,.c
GNU C ++ zastosowania:
.C
,.cc
,.cxx
,.cpp
,.c++
Cyfrowy Mars zastosowania:
.cpp
,.cxx
Borland C ++ używa:
.cpp
Watcom używa:
.cpp
Microsoft Visual C ++ zastosowania:
.cpp
,.cxx
,.cc
Metrowerks CodeWarrior zastosowania:
.cpp
,.cp
,.cc
,.cxx
,.c++
Różne środowiska obsługują różne rozszerzenia. Ja też szukałem odpowiedzi na to pytanie i znalazłem ten post. Opierając się na tym poście, myślę, że mogę pójść za
.hpp
i.cpp
dla ułatwienia rozpoznawania różnych platform / narzędzi.źródło
.cpp
?.cpp
plików źródłowych C ++. (W cytowanej odpowiedzi zaznaczono, że „cpp” jest skrótem od preprocesora C.).cpp
jest zalecane rozszerzenie dla C ++, o ile wiem. Niektóre osoby zalecają nawet używanie.hpp
nagłówków C ++, aby odróżnić je od C.Mimo że kompilator nie dba o to, co robisz, jest to osobiste preferencje.
źródło
Osobiście używam
.cc
rozszerzenia do plików implementacyjnych,.hh
do nagłówków i.inl
do wbudowanych / szablonów.Jak powiedziano wcześniej, jest to głównie kwestia gustu.
Z tego, co widziałem ,
.cc
wydaje się być bardziej „ zorientowany na projekty open source ”, jak to jest zalecane w niektórych świetnych stylach kodowania oprogramowania open source, podczas gdy.cpp
wydaje się bardziej oknoowy.--- EDYTOWAĆ
Jak wspomniano, jest to „z tego, co widziałem” , może być źle. Po prostu wykorzystałem wszystkie projekty Windows, nad którymi pracowałem
.cpp
, i wiele projektów typu open source (głównie na systemach uniksowych).cc
.Przykłady stylów kodowania przy użyciu
.cc
:źródło
-*- C++ -*-
znaczników w nagłówkach llvm.org/docs/CodingStandards.html ; Styl kodowania Mozilli sugeruje .cpp / .h developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/… ; Wydaje się, że KDE używa .cpp / .h zbyt szybkigit.kde.orgInne używane rozszerzenia plików to
.cxx
i.C
(wielkie C). Wierzę, że.C
pierwotnie używał Bjarne Stroustrup ..cpp
to nazwa preprocesora C, więc niefortunnie jest, że był on również używany w C ++.źródło
Inną opcją jest miejsce,
.cxx
gdziex
ma być plus obrócony o 45 °.Obsługiwane są systemy Windows, Mac i Linux,
.c++
więc powinniśmy z tego skorzystać.źródło
Kilka osób mówi, że
.cc
nic nie znaczy? Może. C ++ zaczął życie jako „C with Classes”.Prawda, że
.cc
a.cpp
także nazwy poleceń w większości systemów uniksowych (odpowiednio kompilator c i preprocesor c).Używam
.cpp
wyłącznie, ale zacząłem na Windowsie..cc
jest bardziej konwencją uniksową, chociaż coraz mniej ją tam widzę. GNU make ma reguły,.cpp
więc jest to prawdopodobnie preferowane, będzie domyślnie działać zarówno w systemie Windows, jak i we wszystkich innych. Z drugiej strony nowoczesne C ++ w ogóle nie używa rozszerzenia dla nagłówków, naprawdę tego nie lubię. Wszystkie moje projekty używają.h
plików nagłówkowych i obsługują zarówno C, jak i C ++ w jak największym stopniu poprzezextern "C"
i testowanie__cplusplus
.źródło
Postępuj zgodnie z konwencją używaną przez projekt / zespół.
źródło
Osobiście nigdy nie widziałem
.cc
w żadnym projekcie, nad którym pracowałem, ale pod względem technicznym kompilatora to nie obchodzi.Dbają o to programiści pracujący na Twoim źródle, więc moją podstawową zasadą jest dostosowanie się do tego, co czuje twój zespół. Jeśli twój „zespół” jest społecznością typu open source, wybierz coś bardzo powszechnego, z czego
.cpp
wydaje się być ulubionym.źródło
.cc
jako rozszerzenie plików implementacji C ++Podobnie jak w przypadku większości konwencji stylu, ważne są tylko dwie rzeczy:
Może się to wydawać sprzeczne, ale każdy z nich ma wartość z własnych powodów.
źródło
.C
i.cc
wydają się być standardem dla (kilku) zorientowanych na Uniksa programów C ++, które widziałem. Zawsze używałem.cpp
samego siebie, ponieważ naprawdę pracuję tylko w systemie Windows, a to jest standard tam od zawsze.Polecam
.cpp
osobiście, ponieważ ... oznacza „C Plus Plus”. Oczywiście bardzo ważne jest, aby rozszerzenia plików były akronimami, ale jeśli to uzasadnienie okaże się niewystarczająco przekonujące, innymi ważnymi rzeczami są niestosowanie klawisza Shift (który wyklucza.C
i.c++
) oraz unikanie metaznaków wyrażeń regularnych tam, gdzie to możliwe (co wyklucza.c++
- niestety nie da się tego uniknąć.
.).To nie wyklucza
.cc
, więc nawet jeśli tak naprawdę nic nie oznacza (czy robi to?), To prawdopodobnie jest dobrym wyborem dla kodu zorientowanego na Linuksa.źródło
Używam .C i .h odpowiednio dla źródła i nagłówka. Jedną fajną rzeczą przy tym wyborze jest to, że w wierszu poleceń można łatwo
*.[Ch]
wybrać wszystkie pliki kodu. Używanie.C
może być problemem w systemach plików bez rozróżniania wielkości liter, ale jeśli maszfoo.c
i znajduje sięfoo.C
w tym samym katalogu, zasługujesz na to, co dostajesz :)źródło
Rozszerzenie .cc jest niezbędne do korzystania z reguł niejawnych w plikach makefiles. Przejrzyj te linki, aby lepiej zrozumieć pliki makefile, ale spójrz głównie na drugi, ponieważ wyraźnie mówi o przydatności rozszerzenia .cc:
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
Właśnie się o tym dowiedziałem.
źródło
.cpp
pliki. Bez obaw ! :-).C
może być problematyczne w systemach z systemami plików bez rozróżniania wielkości liter. Nie sądzę, że istnieje jakaś szczególna zaleta, o ilemake
dotyczy, w użyciu.cc
przez.cpp
, na przykład..cpp
Pliki Makefile działają dobrze z plikami źródłowymi C ++.Nie ma znaczenia, którego rozszerzenia użyjesz. Wybierz cokolwiek bardziej lubisz, zachowaj spójność z nazywaniem. Jedyny wyjątek, o którym wiem z tą konwencją nazewnictwa, to to, że nie mogłem
WinDDK
(lub jest toWDK
teraz?) Kompilować.cc
plików. W systemie Linux nie stanowi to jednak problemu.źródło
Zaczynam nowy projekt w C ++ i zacząłem szukać najnowszych w stylu C ++. Skończyło się tutaj na nazwach plików i pomyślałem, że podzielę się tym, jak wymyśliłem swój wybór. Tutaj idzie:
Stroustrup postrzega to bardziej jako kwestię biznesową niż techniczną .
Postępując zgodnie z jego radą, sprawdźmy, czego oczekują łańcuchy narzędzi.
W systemach UNIX / Linux możesz interpretować następujące domyślne reguły tworzenia GNU jako faworyzujące przyrostek nazw plików .cc, ponieważ reguły .cpp i .C to tylko aliasy:
(Uwaga: nie ma domyślnego aliasu COMPILE.cxx)
Więc jeśli celujesz w UNIX / Linux, zarówno .cc, jak i .cpp są bardzo dobrymi opcjami.
Podczas celowania w system Windows szukasz problemów z .C, ponieważ jego system plików nie rozróżnia wielkości liter. I może być ważne, aby pamiętać, że Visual Studio preferuje sufiks .cpp
Podczas celowania w macOS należy pamiętać, że Xcode woli .cpp / .hpp (właśnie zaznaczone na Xcode 10.1). Zawsze możesz zmienić szablon nagłówka na .h.
Za to, co jest warte, możesz również oprzeć swoją decyzję na podstawie kodu, który ci się podoba. Google używa .cc a LLVM libc ++ używa .cpp.
Co z plikami nagłówkowymi? Są one kompilowane w kontekście pliku C lub C ++, więc nie ma żadnego kompilatora ani systemu kompilacji, aby odróżnić .h od .hpp. Podświetlanie składni i automatyczne wcięcia przez edytor / IDE mogą jednak stanowić problem, ale rozwiązuje się to poprzez powiązanie wszystkich plików .h z trybem C ++. Jako przykład, moja konfiguracja emacsa w systemie Linux ładuje wszystkie pliki .h w trybie C ++ i edytuje nagłówki C w porządku. Poza tym, mieszając C i C ++, możesz postępować zgodnie z tą radą .
źródło
Jak inni pisali przede mną, na końcu jest to, z czego korzysta twój projekt / zespół / firma.
Osobiście nie używam
cc
rozszerzenia, staram się obniżyć liczbę rozszerzeń i nie zwiększać ich, chyba że istnieje wyraźna wartość (moim zdaniem).Do tego, co jest tego warte, używam :
c
- Tylko czysty kod C, bez klas i struktur z metodami.cpp
- kod C ++hpp
- Kod tylko nagłówki. Implementacje znajdują się w nagłówkach (np. Klasy szablonów)h
- pliki nagłówkowe dla obu C / C ++. Zgadzam się, że można wprowadzić inne rozróżnienie, ale jak napisałem, staram się zmniejszyć liczbę rozszerzeń dla uproszczenia. Przynajmniej z projektów C ++, w których pracowałem,h
pliki dla czystego C są rzadsze, dlatego nie chciałem dodawać kolejnego rozszerzenia.źródło