當程式複雜時源**會很長,如果把全部**放在乙個原始檔裡,寫程式,修改、加工程式都會很不方便。程式檔案很大時,裝入編輯會遇到困難;在檔案中找位置也不方便;對程式做了一點修改,除錯前必須對整個原始檔重新編譯;如果不慎把已經除錯確認的正確部分改了,又會帶來新的麻煩。在實踐中人們體會到:應當把大軟體(程式)的**分成一些部分,分別放在一組源程式檔案中,分別進行開發、編譯、除錯,然後把它們組合起來,形成整個軟體(程式)。c語言本身支援這種開發方式。當我們寫的程式較大時,上述問題就會反應出來,因此應當學習「大程式」的開發方法。
把乙個程式分成幾個源程式檔案,顯然這些原始檔不是互相獨立的。乙個原始檔裡可能使用其他原始檔定義的程式物件(外部變數、函式、型別等),這實際上在不同原始檔間形成了一種依賴關係。這樣,乙個原始檔裡某個程式物件的定義改動時,使用這些定義的原始檔也可能要做相應修改。在生成可執行程式時,應該重新編譯改動過的原始檔,而沒改過的原始檔就不必編譯了。在連線生成可執行程式時,要把所有必要的模組裝配在一起。這些管理工作可以由人自己做,但是很麻煩。 turbo c整合開發環境的專案管理功能能幫助我們處理這些問題。利用這種功能,開發大程式的工作將更加方便。今天的各種程式開發環境都提供了類似的管理功能。
用c語言寫大程式,應當把源程式分成若干個原始檔。其中有:
(1)乙個或幾個自定義的標頭檔案,通常用 .h 作為副檔名。標頭檔案裡一般放:
#include預處理命令,引用系統標頭檔案和其他標頭檔案;
用#define定義的公共常量和巨集;
資料型別定義,結構、聯合等的說明;
函式原型說明,外部變數的extern說明;等等。
(2)乙個或幾個程式原始檔,通常用 .c 作為副檔名。這些檔案中放:
對自定義標頭檔案的使用(用#include命令);
原始檔內部使用的常量和巨集的定義(用#define命令);
外部變數的定義;
各函式的定義,包括main函式和其他函式。
不提倡在乙個 .c 檔案裡用#include命令引入另乙個 .c 檔案的做法。這樣往往導致不必要的重新編譯,在除錯程式查錯時也容易引起混亂。應該通過標頭檔案裡的函式原型說明和外部變數的extern說明,建立起函式、外部變數的定義(在某個源程式檔案中)與它們的使用(可能在另乙個源程式檔案中)之間的聯絡,這是正確的做法。
使用turbo c專案管理功能的方法是:
首先建立乙個「專案檔案」。本系統中專案檔案用.prj作為副檔名。專案檔案同樣可以用編輯器建立,在這個檔案中列出作為本專案組成部分的所有源程式檔案的完整名字(包括副檔名),每行列乙個,標頭檔案不必列入。原始檔的次序沒有關係,第乙個原始檔的名字將被作為最後生成的可執行程式的名字。
在啟動整合開發環境後,首先裝入專案檔案。用 project選單第乙個命令完成這個工作。在此之後,程式設計工作的物件就是這個專案。
裝入和修改原始檔的方式不變。在乙個原始檔初步完成後,可以用alt-f9或選單編譯命令對它進行編譯,做語法檢查,生成目標模組。這時還可能產生由於缺少必要外部定義而出現的錯誤。發現這種問題,應當修改有關標頭檔案。
在各個原始檔的分別初步編譯除錯後,用f9或選單的compile/make項命令開發環境建立可執行程式。這時程式加工的工作物件是整個專案,如果系統發現某些目標模組不是最新的(源程式修改過),就自動對它們重新編譯,最後把目標模組連線起來,生成可執行程式。編譯中若發現原始檔有錯,所有的錯誤都將列在訊息視窗,排錯時系統能夠對各個檔案中的錯誤自動定位,如果被定位錯誤所在的檔案不是當前檔案,系統將自動裝入相應的檔案,並把亮條和游標放在正確位置。在這個加工過程中,還可能發現模組之間的關聯錯誤,如變數函式的名字使用和定義不一致,方式不正確,變數函式的extern說明與實際定義不一致,等等。在make過程中,系統利用源程式的時間資訊,確定程式模組的前後時間關係,決定哪些模組需要重新編譯,最後在連線時裝入所有必需的模組。
C語言從入門到構建大型專案 目錄
c語言從入門到構建大型專案 目錄 本專欄從實戰的角度,從c語言基礎語法講起,每一節都有例項 鼓勵大家邊學習,邊動手學,如果只是學學理論的話,我覺得隨便找一本教材都比我的專欄寫的好。動手練習後看到自己的成果,也會更有動力繼續學習下去。為什麼很多學生在學校裡面學完c語言之後,覺得沒什麼用,最後放棄,原因...
dvc 寫c 語言專案 C 酒店管理專案
dvc 寫c 語言專案 here you will get c hotel management project.this system provides various options like booking a room,checking customer details,editing or...
示例C語言程式記憶體管理
我們知道 記憶體分配方式有三種 1 從靜態儲存區域分配。內存在程式編譯的時候就已經分配好,這塊內存在程式的整個執行期間都存在。例如全域性變數,static變數。2 在棧上建立。在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函式執行結束時這些儲存單元自動被釋放。棧記憶體分配運算內置於處理器...