編程視界:你每天都會碰到的源文件后綴名,背后有什么故事?
很多C語言學習者多多少少也會了解一些C++的語法,應(yīng)該能夠發(fā)現(xiàn),C語言和C++程序源文件的后綴名是不同的——C語言程序源文件后綴名為“.c”,而C++程序源文件后綴名一般為“.cpp”,“.h”后綴名則常常是頭文件的后綴名。
百家號:IT劉小虎
這些后綴名是怎么產(chǎn)生的呢?

可是,在程序開發(fā),或者一些開源項目中,我們還常會看到一些后綴名為“.hpp”,”.cc”,“.cxx”的源文件,讓人很迷惑,這些不同后綴名的源文件到底有什么不同呢?以及,這些后綴名是怎么產(chǎn)生的呢?
多樣的源文件后綴名
事實上,在一開始,C++程序的源文件后綴名也是“.c”和“.h”,這與C語言程序源文件的后綴名完全一樣。這就帶來了一些問題,其中一個比較顯著的問題就是編譯器無法輕松的區(qū)分某個源文件里的程序究竟是使用C++編寫的,還是C語言編寫的。
因此,后來C++程序源文件的后綴名不再使用“.c”了,有些使用“.C”后綴名以區(qū)別于C語言程序,還有些C++源文件則使用“.c++”,“.cc”,“.cxx”作為后綴名。

“.C”與“.c++”后綴名的適用性不夠廣
不過,由于“.C”與“.c++”后綴名的適用性不夠廣,比如有的編譯器不區(qū)分后綴名的大小寫,以及有些系統(tǒng)不支持文件名使用“+”符號,這兩種后綴名的C++源文件越來越少了。
Dos 和 Windows 系統(tǒng)的編譯器偏向使用“.cpp”(c plus plus, c++)作為 C++ 源文件的后綴名,考慮到 Windows 系統(tǒng)的市場占有率極高,因此為了統(tǒng)一性,以“.cpp”作為源文件后綴名的C++程序項目相當多。
再來看頭文件,基本上和源文件的歷史一致,曾經(jīng)出現(xiàn)過后綴名為“.H”,“.h++”,”.h”以及“.hxx”和“.hpp”的頭文件。但是,與源文件不太一樣的時,今天仍然有許多C++程序仍然使用“.h”后綴名的頭文件。

今天仍然有許多C++程序仍然使用“.h”
相信讀者在一些“.h”后綴名的頭文件里見到過下面這樣的宏控制命令:
#ifdef __cplusplus
extern "C" {
#endif
...
#ifdef __cplusplus
}
#endif
基本上,這樣的頭文件既可以被C語言程序包含,又可以被C++程序包含。有時,有些頭文件不知道自己是否可以被包含在C語言程序的上下文中,甚至連后綴名都沒有。
其他
另外,有些程序項目的源文件使用“.ii”,”.ixx”,“.ipp”作為后綴名,這類文件一般專用于提供內(nèi)斂定義。還有些源文件使用“.txx”,“.tpp”,“.tpl” 作為后綴名,用于定義模板。這些源文件一般會被包含在頭文件里,或者直接包含在程序項目的上下文中。

編譯器和工具通常并不關(guān)心源文件的后綴
編譯器和工具通常并不關(guān)心源文件的后綴名,不過在默認狀態(tài)下,編譯器和工具會根據(jù)源文件的后綴名識別出代碼就是是C語言還是C++語言,還是其他編程語言編寫的。
換句話說,如果編譯器能夠識別“.cpp”和“.cc”后綴名的源文件,那么使用哪一個都是可以的,因為它們都能告訴編譯器該源文件代碼是由C++語言編寫的。
小結(jié)
本節(jié)討論了幾種在程序開發(fā)中常見的源文件后綴名,可見,它們其實并無太多含義。如果不會造成歧義,甚至可以任意使用這些后綴名。不過,比較推薦的做法是在項目中保持統(tǒng)一,如果其他C++源文件都是以“.cc”作為后綴名的,那么我們新定義的C++源文件要是使用“.cpp”源文件就不是很好了。
點個贊再走吧!
最后,對于學習編程或者在工作想升職的程序員兄弟,如果你想更好的提升你的編程能力幫助你提升水平!筆者這里或許可以幫到你~
微信公眾號:C語言編程學習基地
分享(源碼、項目實戰(zhàn)視頻、項目筆記,基礎(chǔ)入門教程)
歡迎轉(zhuǎn)行和學習編程的伙伴,利用更多的資料學習成長比自己琢磨更快哦!
