在我們入門c/c++語言時,編寫的大部分c語言程式都只包含乙個原始檔,沒有將**分散到多個模組中,這裡的模組指的時不同的原始檔,每個檔案稱為乙個可編譯單元,可以分別編譯。
在c語言中,我們可以將乙個.c檔案稱為乙個模組(module);所謂模組化開發,是指乙個程式包含了多個原始檔(.c 檔案)以及標頭檔案(.h 檔案)。
c語言由源**生成可執行檔案的各階段如下:
c源程式->編譯預處理->編譯->優化程式->匯程式設計序->鏈結程式->可執行檔案。通常把編譯預處理,編譯,優化程式,匯程式設計序這幾個階段統稱編譯階段。這裡主要講解編譯與鏈結部分,其他部分涉及編譯原理,且此博文不涉及該方面內容
這裡需要注意幾點:
假設某資料夾中目前包含兩個源程式(.c),main.c和sum.c(假設讀者配置好gcc環境變數)
原始檔main.c的內容如下:
#include
intmain
(void
)
原始檔sum.c的內容如下:
int
sum(
int n)
else
}
第一步、命令列進入該資料夾目錄
第二步、編譯單個檔案
此時有警告:
提示函式sum沒有進行顯示的宣告,我們修改一下main.c,加上對sum函式的宣告
#include
intsum
(int n)
;//函式宣告
intmain
(void
)
再次編譯,ok,編譯警告通過。
這樣得到了待鏈結的整個程式(.exe)所需要的對應的兩個二進位制**檔案,因為鏈結步驟鏈結的就是.o字尾的檔案,此時,還需要把該兩個檔案(.o)和包含定義類似printf()標準庫函式的二進位制實現**等鏈結才能生成最後的可執行檔案。
最後附上執行結果:
總結:當然這只是讀者還可以查閱資料嘗試著做乙個makefile進行自動化編譯鏈結,也可以直接用整合開發環境vsc++6.0、devc++、code::blocks、vs等建立乙個專案,並在專案裡新建儲存main.c和sum.c,直接編譯執行,整合開發環境將這些底層配置都幫你做好了。
C語言模組化程式設計
c語言模組化程式設計 模組劃分 c語言模組化程式 設計需理解如下概念 1 模組即是乙個.c檔案和乙個.h檔案的結合,標頭檔案 h 中是對於該模組介面的宣告 2 某模組提供給 其它模組呼叫的外部函式及資料需在.h中檔案中冠以extern關鍵字宣告 3 模組內的函式和全域性變數需在.c檔案開頭冠以sta...
模組化編譯方式
編譯工具提供依賴分析模式和普通編譯模式兩種編譯模式 在依賴分析編譯模式下正確的模組引用方式 require util a.js b.js中引用a.js require a.js 從當前目錄到專案根目錄下遞迴尋找node modules資料夾中是否存在a.js,沒有則報錯 require a.js 普...
C語言之模組化程式設計
1 為什麼使用函式?函式就是功能 每個函式代表特定的功能,函式的名字應反應其代表的功能。2 怎麼定義函式?函式定義時需指定函式的型別 即函式返回值的型別。函式定義可大致分為以下三類 無參函式 型別名 函式名 void 可省略 有參函式 型別名 函式名 形參 空函式 程式設計時往往需要確定若干個模組,...