. h和. c有什么區(qū)別?
本質(zhì)上沒有任何區(qū)別。 只不過一般:.h文件是頭文件,內(nèi)含函數(shù)聲明、宏定義、結(jié)構(gòu)體定義等內(nèi)容
.c文件是程序文件,內(nèi)含函數(shù)實現(xiàn),變量定義等內(nèi)容。而且是什么后綴也沒有關(guān)系,只不過編譯器會默認(rèn)對某些后綴的文件采取某些動作。你可以強制編譯器把任何后綴的文件都當(dāng)作c文件來編。
編譯器在編譯時是以C文件為單位進(jìn)行的,也就是說如果你的項目中一個C文件都沒有,那么你的項目將無法編譯,連接器是以目標(biāo)文件為單位。
它將一個或多個目標(biāo)文件進(jìn)行函數(shù)與變量的重定位,生成最終的可執(zhí)行文件,在PC上的程序開發(fā),一般都有一個main函數(shù),這是各個編譯器的約定,當(dāng)然,你如果自己寫連接器腳本的話,可以不用main函數(shù)作為程序入口。(main .c文件 目標(biāo)文件 可執(zhí)行文件)
擴展資料
main函數(shù)為標(biāo)準(zhǔn)C/C++的程序入口,編譯器會先找到該函數(shù)所在的文件。
假定編譯程序編譯myproj.c(其中含main())時,發(fā)現(xiàn)它include了mylib.h(其中聲明了函數(shù)voidtest()),那么此時編譯器將按照事先設(shè)定的路徑(Include路徑列表及代碼文件所在的路徑)查找與之同名的實現(xiàn)文件(擴展名為.cpp或.c,此例中為mylib.c)。
如果找到該文件,并在其中找到該函數(shù)(此例中為voidtest())的實現(xiàn)代碼,則繼續(xù)編譯;如果在指定目錄找不到實現(xiàn)文件,或者在該文件及后續(xù)的各include文件中未找到實現(xiàn)代碼。
則返回一個編譯錯誤.其實include的過程完全可以"看成"是一個文件拼接的過程,將聲明和實現(xiàn)分別寫在頭文件及C文件中,或者將二者同時寫在頭文件中,理論上沒有本質(zhì)的區(qū)別。
相關(guān)評說:
扎囊縣平刀: ______ H是空調(diào)自定義的一個系列名稱代號,R表示冬季能加熱,你如果能把整個型號說出來,我能給你解釋的更詳細(xì)
扎囊縣平刀: ______ .h 頭文件 head 的意思 意思是說有些函數(shù)那個頭文件里有 了 你只要加入這個頭文件 就可以使用 說白了就是系統(tǒng)程序編譯出的給你用的.c 就是你自己寫的..
扎囊縣平刀: ______ 頭文件和源文件在本質(zhì)上沒有任何區(qū)別. 只不過一般:后綴為 .h 的文件是頭文件,內(nèi)含函數(shù)聲明、宏定義、結(jié)構(gòu)體定義等內(nèi)容.后綴為 .c 的文件是源文件,內(nèi)含函數(shù)實現(xiàn),變量定義等內(nèi)容.而且是什么后綴也沒有關(guān)系,只不過編譯器會默認(rèn)對...
扎囊縣平刀: ______ 如果你沒有用到庫函數(shù)或者外部文件的函數(shù)之類的可以不用#include包含文件(但一般基本會用到),.h表示頭文件,即head的第一個字母,.c表示是一個C語言的源代碼文件.
扎囊縣平刀: ______ 傳統(tǒng)的C語言 頭文件都是帶.h的 后來有了C++ 為了區(qū)別, 以C++風(fēng)格封裝的頭文件 不帶.h 不過 這個只是一個約定而并非規(guī)范,事實上,這個約定執(zhí)行的并不是太好 仍有很多C++的頭文件 還是帶.h的. 名存實亡 實際使用中, 不需要太在意.
扎囊縣平刀: ______ 文件包含命令可以是.c也可以是.h,但他們不一樣 包含頭文件,只是用頭文件里面的內(nèi)容,在本文件中聲明一下,它并不是本文件的一部分 包含c文件,是把c文件整個內(nèi)容當(dāng)作本文件的一部分了
扎囊縣平刀: ______ c是針對C語言的,即C語言的后綴,CPP是C++語言的后綴,.H是頭文件的后綴...編譯的時候.c調(diào)用C語言庫,.cpp調(diào)用c++語言庫,.h不能編譯
扎囊縣平刀: ______ c是青春版或者可以說說是低配版的意思,主要就是價格比較好看,ih系列是主打高端的.
扎囊縣平刀: ______ C++頭文件加H和不加H有什么區(qū)別 iostream是C++的頭文件,iostream.h是C的頭文件,即標(biāo)準(zhǔn)的C++頭文件沒有.h擴展名,將以前的C的頭文件轉(zhuǎn)化為C++的頭文件后,有時加上c的前綴表示來自于c,例如cmath就是由math.h變來的. iostream.h...
扎囊縣平刀: ______ 子程序不要定義在.h中.函數(shù)定義要放在.c中,而.h只作聲明.否則多援用幾次,就會產(chǎn)生函數(shù)重復(fù)定義的毛病..h只作聲明,編譯后不產(chǎn)生代碼這樣做目的是為了實現(xiàn)軟件的模塊化使軟件結(jié)構(gòu)清晰,而且也便于他人使用你寫的程序純潔用C語言語法的角度,你固然可以在.h中放任何東西,由于#include完全等價于把.h文件Ctrl-CCtrl-V到.c中.h中應(yīng)當(dāng)都是1些宏定義和變量、函數(shù)聲明,告知他人你的程序“能干甚么、該怎樣用”.c中是所有變量和函數(shù)的定義,告知計算機你的程序“該怎樣實現(xiàn)”