新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 如何將多個(gè)C語(yǔ)言模塊組合成一個(gè)程序

如何將多個(gè)C語(yǔ)言模塊組合成一個(gè)程序

作者: 時(shí)間:2016-11-23 來(lái)源:網(wǎng)絡(luò) 收藏
C語(yǔ)言的基本組成單元是函數(shù),各個(gè)函數(shù)之間可以相互引用。在學(xué)到靜態(tài)函數(shù)有時(shí)又將為內(nèi)部函數(shù)和外部函數(shù),即分別用static和extern說(shuō)明的函數(shù)時(shí),有不少人感到很迷惑:“外部”和“內(nèi)部”到底是怎么一回事呢?
一般來(lái)說(shuō),我們編制的C語(yǔ)言源程序都是放在一個(gè)擴(kuò)展名為.C的文件中,這對(duì)一個(gè)較簡(jiǎn)單的程序是合適的,但對(duì)于大型項(xiàng)目就不合適了,其一,大項(xiàng)目往往由多人合作完成,大家都來(lái)操作同一個(gè)文件極易出錯(cuò);其二,大文件的編譯、調(diào)試都極為復(fù)雜;其三,如果兩個(gè)程序中都要用到同一個(gè)自定義的函數(shù),此函數(shù)須從一文件移動(dòng)到另一文件中,這種移動(dòng)容易出錯(cuò)。為了解決這一矛盾,一個(gè)大的程序往往被分成幾個(gè)部分,存放在不同的DOS文件各。各個(gè)部分可以分開(kāi)編輯、編譯,最后再把這幾部分鏈接成一個(gè)完整的程序。
把一程序分成幾部分是有一定規(guī)則的。一個(gè)函數(shù)就不能分開(kāi)在兩個(gè)文件中,也不能在兩個(gè)文件中都對(duì)其定義一次,因此每個(gè)文件都是由完整的對(duì)函數(shù)式變量的定義式說(shuō)明組成的。對(duì)于某一文件中的函數(shù),它可以直接引用本文件中所定義的函數(shù)和外部變量。如果要想引用別的文件中定義的函數(shù)或變量,則應(yīng)在引用之前用 extern,對(duì)此變量或函數(shù)進(jìn)行說(shuō)明。如果一個(gè)函數(shù)或外部變量在定義時(shí)前面加有static說(shuō)明,那么就只有本文件內(nèi)的函數(shù)能夠使用它。習(xí)慣上,在每個(gè)文件的最前面放上不在此文件中的函數(shù)及變量的說(shuō)明,由于對(duì)函數(shù)和變量的說(shuō)明可以多次重復(fù)進(jìn)行,往往建立一個(gè)頭文件,在其中放入所有外部變量和外部函數(shù)的說(shuō)明并在每個(gè)說(shuō)明前面加上extern,然后每個(gè)源文件的第一行都用include包含這個(gè)頭文件。
對(duì)于每一個(gè)完整的源文件,都應(yīng)該能夠單獨(dú)通過(guò)編譯,以便迅速改正其中的編輯錯(cuò)誤。Turbo c中,如果你選擇了編譯命令,它就編譯當(dāng)前編輯窗口中的文件。對(duì)于被調(diào)用函數(shù),可以編出簡(jiǎn)單的調(diào)用函數(shù)對(duì)其可靠性進(jìn)行測(cè)試,看它能不能完成預(yù)期的功能。
在每一個(gè)文件都編好并且都通過(guò)了編譯之后,你需要建立一個(gè)項(xiàng)目文件,把所有的文件組合在一起進(jìn)行鏈接。如果你使用的是Borland c++ 2.0以上的版本或MS C的高版本的話,可以看到其主菜單上有一個(gè)Project(項(xiàng)目)菜單,其中一項(xiàng)為建立Project文件,選此命令,輸入項(xiàng)目文件名后即可直接從列出的目錄中選定組成項(xiàng)目的文件。但在Turbo C 2.0中,這個(gè)過(guò)程要復(fù)雜一些,下面我們來(lái)看一個(gè)例子。
假設(shè)有一個(gè)程序,其中包含有main(),fun1(),fun2()三個(gè)函數(shù)及一個(gè)公用的外部變量int a:我們把main()及a的定義放在文件F1.C中,而將fun1(),及fun2()的定義放在文件F2.C中,即
F1.C
extern void fun1(int x);
extern void fun2(char c);
int a;
main()
{ fun1(5);
} fun2(A)
F2.C
extern int a;
void fun1(int x);
{…
a=a+x

}
void fun2(char c)
{…
}
先應(yīng)把F1.C和F2.C分別輸入計(jì)算機(jī)并編譯后存盤(pán)。然后選File菜單下NEW命令,建立一個(gè)新的文件,即項(xiàng)目文件,不妨取名為MY.PRJ,其中只有兩行:
F1.C
F2.C
必要時(shí),還應(yīng)在文件名前加上盤(pán)符和路徑,存盤(pán)。然后打開(kāi)Project菜單,選Project name.輸入名字MY.PRT。這時(shí)Turbo.C就知道當(dāng)前要鏈接,運(yùn)行的是一個(gè)由兩個(gè)文件組的程序。選擇RUN菜單下的RUN命令即可對(duì)兩個(gè)文件進(jìn)行編譯、鏈接和運(yùn)行的一體化操作。F4,F(xiàn)7,F(xiàn)8及斷點(diǎn)設(shè)置等功能也可用于程序的調(diào)試中。


評(píng)論


技術(shù)專區(qū)

關(guān)閉