2009-10-09 88 views
400

我已經看到C++代碼保存爲.cc.cpp文件。兩者有什麼不同?C++代碼文件擴展名? .cc vs .cpp

Google style guide似乎暗示.cc,但沒有提供解釋。

我主要關心Linux系統上的程序。

+60

**結論**沒關係。 **可能的起源** cc = C有類,cpp = C加上 – Lazer 2010-09-28 18:42:07

+4

它對鏗鏘++很重要。當你給它一個名字以.h結尾的C++頭文件時,叮聲明會警告你。 – allyourcode 2013-04-13 08:37:44

+48

嘿,什麼給?爲什麼這個問題關閉?這裏有很多基於事實的答案(儘管我承認很多隻是隨意的觀點)。我認爲沒有理由相信沒有更多有用的信息可能發佈。 – allyourcode 2013-04-13 08:48:14

回答

490

在一天結束時,它並不重要,因爲C++編譯器可以以任何格式處理文件。如果這是您團隊中的一個真實問題,請投擲一枚硬幣並繼續進行實際工作。

+43

那麼,這是一個有效的觀點,但它並不回答用戶的問題。 – vikrantt 2015-05-11 20:04:41

+170

cc更快地輸入 – thang 2015-08-07 15:58:04

+3

@thang:我猜你是諷刺,還是? – 2016-02-18 13:03:54

58

.cpp是C++的推薦擴展,據我所知。有些人甚至推薦使用.hpp作爲C++頭文件,只是爲了與C區分。

儘管編譯器並不在意你做什麼,但它是個人偏好。

+42

我決定從使用.h切換到使用.hpp的C++頭文件;主要是因爲像編輯器這樣的其他工具也需要知道 - 另外,當使用帶有gcc的預編譯頭文件時,除非在預編譯時使用'-x C++ - header'選項,否則它默認將.h文件和C++用於.hpp文件一個.h文件。 – jdkoftinoff 2009-10-09 18:00:45

+3

@jd。同意。如果h/c文件變成hpp/cpp文件,它使自動化工具變得容易一點。 – 2009-10-09 20:34:41

+4

g ++不能識別.hpp作爲C++頭文件(用於頭文件預編譯),但是.hh它。正因爲如此,我最終將.cc/.hh放在.cpp/.hpp上,因爲實際上沒有任何區別。 – Tronic 2010-12-09 18:41:16

10

只需按照項目/團隊使用的約定。

14

其他所用的文件擴展名包括.cxx.C(首都C)。我相信Bjarne Stroustrup最初使用.C.cpp是C預處理器的名稱,因此它也被用於C++也是不幸的。

5

cpp = c plus plus,因此我的首選,cc或cxx代表什麼?

+55

cxx是加號後的C++。他們不穩定,你知道,站在這樣一個點上。 c更穩定。這也是蘋果公司II作爲蘋果電腦的結果。 – 2009-10-09 18:07:56

+4

@David - 也許我真的很老,但我記得Apple II是「Apple」[「]。 – 2009-10-09 19:16:13

+0

@大衛哦我從來沒有想到這一點。 – Andrew 2009-10-09 19:42:48

5

您使用哪些擴展並不重要。選擇你喜歡的更多,只要符合命名。我知道這個命名約定唯一的例外是我不能使WinDDK(或現在是WDK?)編譯.cc文件。在Linux上,雖然這不是問題。

9

另一種選擇是.cxx其中x應該是一個正旋轉45°。

Windows,Mac和Linux都支持.c++,所以我們應該使用它。

8

我個人從未在任何項目中看到過.cc,但是在編譯器不會在意的所有技術上。

誰會關心開發人員的工作,所以我的經驗法則是與您的團隊一起工作。如果您的「團隊」是開源社區,請使用非常常見的東西,其中.cpp似乎是最受歡迎的。

6

與大多數樣式約定,只有兩件事情說事:

  1. 是你用什麼一致的,只要有可能。
  2. 不要設計任何依賴於正在使用的具體選擇的東西。

這些似乎矛盾,但他們每個人都有自己的理由價值。

6

.C.cc似乎是我見過的(少數)面向Unix的C++程序的標準。我自己總是使用.cpp,因爲我只是真的在Windows上工作,並且那裏一直是標準,因爲像永遠一樣。

我個人推薦.cpp,因爲......它代表「C Plus Plus」。當然,文件擴展名是首字母縮略詞是非常重要的,但是如果這個基本原理沒有足夠的重要性,那麼其他重要的事情就是不使用shift鍵(它排除了.C.c++)並且在可能的情況下避免使用正則表達式元字符.c++ - 不幸的是,你當然不能真的避免.)。

這並不排除.cc,所以即使它不代表什麼(或者它是什麼?),它對於面向Linux的代碼來說可能是一個不錯的選擇。

+1

但「cpp」也可以代表「C預處理器」。事實上,系統上的程序「cpp」很可能是C預處理器...... – Jesper 2009-10-09 20:03:13

+7

也許'.cc'代表「see?see?it worked!」 – Joshua 2009-10-09 20:04:42

+1

.cc = c w/classes ....什麼C++最初被調用! @Joshua – 2013-09-28 15:49:18

23

我個人使用.cc擴展實現文件,.hh爲標題和.inl爲內聯/模板。

如前所述,它主要是一個品味問題。

從我所看到.cc似乎更「開源項目面向」,因爲它是在一些偉大的開放源碼軟件編碼風格建議,而。 cpp似乎更加詼諧。

---編輯

如前所述,這是「從我所看到的」,那可就大錯特錯了。 這只是我所從事的所有Windows項目都使用.cpp,而許多開源項目(主要是unix-likes)使用.cc

例子代碼風格使用.cc

+1

你有這個參考嗎?我從來沒有見過OSS .cc vs Windows .cpp – bobby 2009-10-09 20:02:10

+4

Visual Studio爲C++創建.cpp文件。我不知道它背後的歷史。 – 2011-06-13 13:00:31

+4

LLVM編碼標準似乎主張.cpp/.h並在頭文件中放置' - * - C++ - * - '標籤http://llvm.org/docs/CodingStandards.html; Mozilla編碼風格建議.cpp/.h https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Coding_Style; KDE似乎也在使用.cpp/.h http://quickgit.kde.org/ – sastanin 2015-05-17 22:45:19

8

幾個人說.cc並不代表什麼嗎?它可能。 C++開始了「C with Classes」的生活。

確實,.cc.cpp也是大多數Unix系統上的命令名(分別爲c編譯器和c預處理器)。

我專門使用.cpp,但是我在Windows上啓動。 .cc更像是一個Unix約定,雖然我看到它甚至在那裏越來越少。 GNU make的規則爲.cpp,所以這可能是首選,它在默認情況下在Windows和其他所有設備上都能正常工作。另一方面,現代C++根本不使用擴展頭來進行頭部擴展,我真的不喜歡這種擴展。我的所有項目都使用.h作爲頭文件,並且通過extern "C"和測試__cplusplus儘可能地支持C和C++。

+1

那應該不是.cwc呢? :) – Joshua 2009-10-09 20:06:05

+0

在許多編譯器支持名稱空間之前,他們還使用.h擴展名來標準標題。通常,編譯器提供將庫放入全局名稱空間的不推薦使用的.h版本。這允許遺留代碼的支持。我曾經在某處讀過,他們沒有.h擴展名的原因是該標準允許它們不是文件,但基本上是「內置的」。然而,這可能是杜撰的。 – Clifford 2009-10-09 21:38:32

6

我已經分別使用.C和.h作爲源代碼和頭文件。這種選擇的一個好處是,在命令行上,易於使用*.[Ch]來選擇所有的代碼文件。使用.C可能是在不區分大小寫的文件系統的一個問題,但如果你在同一個目錄有foo.cfoo.C,你值得你得到了什麼呢:)

199

GNU GCC承認所有以下爲C++文件,並且會使用C++無論您是通過gcc還是g ++調用它,都需要編譯:.C,.cc,.cpp,.CPP,.c++,.cp.cxx

.C - 案例事項GCC,.c是C文件,而.C是一個C++文件(如果你讓編譯器決定它是什麼編譯即是)。

GCC還支持其他後綴來指示特殊處理,例如.ii文件將被編譯爲C++,但未經過預處理(打算用於單獨預處理的代碼)。所有已識別的後綴詳細信息如下:gcc.gnu.org

+1

「GCC中的案件很重要」 - Windows(因爲它不區分大小寫)怎麼樣? – 2015-09-13 09:32:52

+2

@Devesh:Windows也一樣。但操作系統將阻止您在僅由大小寫區分的文件夾中擁有兩個文件。 – Clifford 2015-09-13 11:51:39

+7

@DeveshKhandelwal但它是保存案例 – 2015-12-02 21:24:42

128

在決定使用哪個擴展程序時,考慮使用非編譯器工具是一種很好的方法,可以幫助您找到適合您的答案,因此,建議使用makefile和其他工具。

我只是想添加以下內容來幫助我找到一些.cc.cpp信息。通過不同的環境中分解(從 「C++的Primer Plus」 一書)以下的擴展:

UNIX使用:.C.cc.cxx.c

GNU C++使用:.C.cc.cxx.cpp.c++

數字火星用途:.cpp.cxx

的Borland C++使用:.cpp

WATCOM用途:.cpp

微軟的Visual C++使用:.cpp.cxx.cc

Metrowerks CodeWarrior開發用途:.cpp.cp.cc.cxx.c++

不同的環境中支持不同的擴展。我也想回答這個問題,並找到這篇文章。基於這篇文章,我想我可能會使用.hpp.cpp來簡化跨平臺/跨工具識別。

+3

「基於這篇文章」:關於哪篇文章? – 2016-02-18 13:05:03

+14

@phresnel this->文章 – spider 2016-05-09 15:48:57

+2

這個答案比其他人更真實地解決所提出的問題,這個問題是關於尋找堅實慣例的人。其他語言有,但就文件擴展而言,C++似乎缺乏它。 – 2016-09-24 11:29:29

2

.cc擴展名是在makefile中使用隱式規則所必需的。期待通過這些鏈接,以獲得更好的理解makefile文件,但主要是看第二個,因爲它清楚地說,.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

我剛剛得知此現在。

+0

他們再次只是'.cpp'文件。別擔心 ! :-) – lsof 2017-12-05 20:15:05

+0

它說:「我們鼓勵你爲C++源文件使用後綴'.cc'而不是'.C'。」我懷疑這只是一個糟糕的措辭。在不區分大小寫的文件系統的系統上使用'.C'可能會產生問題。例如,就'make'而言,我認爲沒有任何特別的優勢,例如在'.cpp'上使用'.cc'。 Makefile對C++源文件使用'.cpp'工作得很好。 – 2018-01-19 03:28:23