一個函數設計完后,我們可以用三種方法處理它:1)把它放在main()函數的同一個文件中;2)把它和寫好的其它函數一起放在另一個文件中;3)把它放在函數庫中。下面分別討論這三種方法。
4.6.1程序文件的大小
因為C語言允許分別編譯,很自然就會提出這樣的問題:一個文件的最適宜的規模是多大?這規模很重要,因為編譯時間與被編譯文件的大小直接相關。一般說來,鏈接處理的時間比編譯處理的時間短得多,且不需要經常去重新編譯已經運行過的代碼;另一方面,不得
不同時處理多個文件也確實是件厭煩的事。
問題的答案是,每個用戶、每個編譯程序、每個操作系統環境都是不同的。可是對大部分微型機和一般的C編譯程序來說。源程序文件不應長于10000個字節,建立短于5000個字節的文件,可以避免不少麻煩。
4.6.2分類組織文件
在開發一個大型程序時,最令人煩惱的而又是最常遇到的工作之一就是需要檢查每個文件,以確定某個函數的存放。在程序開發的早期做一點文件組織工作就可以避免這一問題。
首先可以把概念上有關的函數組織到一個文件中。如果在編寫正文編輯程序時,把刪除正文所用的所有函數放進另一個文件,等等。
第二,把所有的通用函數放在一起。例如,在數據庫程序中,輸入/輸出格式編排函數是被其它函數調用的通用函數,應把它們放進一個單獨的文件里。
第三,把最高層函數放進一個單獨的文件中,如果空間允許,就和main()放在一起。最高層函數被用來啟動程序的總體活動。這些例程從本質上定義了程序的操作。
4.6.3函數庫
從技術上講,函數庫與分別編譯的函數文件不同。當庫中例程被鏈接到程序中,或當使用一個分別編譯的文件時,文件中的所有函數都被裝入和鏈接到程序中去。對自己創建的函數文件中的大多數文件來說,文件中所有的函數都是要用到的。而對C的標準函數庫,永遠也無法把所有的函數都連接到自己的程序中去,因為目的碼會大得嚇人!
有時候我們需要建立一個函數庫,例如,假定已經完成了一套專門的統計函數,如果當前開發的某個程序僅僅需要求出一批數值的均值,我們就不必把這些函數全部裝入。在這種情況下,函數庫是很有用的。
大部分C語言的編譯程序都有建立函數庫的指令。操作過程因編譯程序不同而異,可從用戶手冊中尋找建庫的具體步驟。