c語(yǔ)言庫(kù)函數(shù) c語(yǔ)言編譯的每個(gè)函數(shù)都可以進(jìn)行獨(dú)立的編譯并執(zhí)行嗎?
c語(yǔ)言編譯的每個(gè)函數(shù)都可以進(jìn)行獨(dú)立的編譯并執(zhí)行嗎?1、可以單獨(dú)進(jìn)行編譯。編譯器自帶的函數(shù)庫(kù)就是這樣的。2、C語(yǔ)言中的函數(shù)可以單獨(dú)進(jìn)行編譯,編譯為目標(biāo)文件,要鏈接成可執(zhí)行文件時(shí),需要主函數(shù)以及庫(kù)。編譯是
c語(yǔ)言編譯的每個(gè)函數(shù)都可以進(jìn)行獨(dú)立的編譯并執(zhí)行嗎?
1、可以單獨(dú)進(jìn)行編譯。編譯器自帶的函數(shù)庫(kù)就是這樣的。
2、C語(yǔ)言中的函數(shù)可以單獨(dú)進(jìn)行編譯,編譯為目標(biāo)文件,要鏈接成可執(zhí)行文件時(shí),需要主函數(shù)以及庫(kù)。編譯是指把程序語(yǔ)句翻譯為機(jī)器代碼,對(duì)于C語(yǔ)言就是把.c文件翻譯為.obj文件。此外,必須要有main函數(shù)的才可以完成連接為exe文件。
C語(yǔ)言程序?qū)Γ蔷幾g不出來(lái)是怎么回事?
C編譯的整個(gè)過(guò)程很復(fù)雜,大致可以分為以下四個(gè)階段:預(yù)處理階段在該階段主要完成對(duì)源代碼的預(yù)處理工作,主要包括對(duì)宏定義指令,頭文件包含指令,預(yù)定義指令和特殊字符的處理,如對(duì)宏定義的替換以及文件頭中所包含的文件中預(yù)定義代碼的替換等,總之這步主要完成一些替換工作,輸出是同源文件含義相同但內(nèi)容不同的文件。編譯、優(yōu)化階段編譯就是將第一階段處理得到的文件通過(guò)詞法語(yǔ)法分析等轉(zhuǎn)換為匯編語(yǔ)言。優(yōu)化包括對(duì)中間代碼的優(yōu)化,如刪除公共表達(dá)式,循環(huán)優(yōu)化等;和對(duì)目標(biāo)代碼的生成進(jìn)行的優(yōu)化,如如何充分利用機(jī)器的寄存器存放有關(guān)變量的值,以減少內(nèi)存訪問(wèn)次數(shù)。匯編階段將匯編語(yǔ)言翻譯成機(jī)器指令。鏈接階段鏈接階段的主要工作是將有關(guān)的目標(biāo)文件連接起來(lái),即將在一個(gè)文件中引用的符號(hào)同該符號(hào)在另外一個(gè)文件中的定義連接起來(lái),使得所有的目標(biāo)文件成為一個(gè)能夠被操作系統(tǒng)裝入執(zhí)行的統(tǒng)一整體。