C語言筆記 模組化編譯鏈結 MinGW

2021-09-27 02:44:33 字數 1258 閱讀 6373

在我們入門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 可省略 有參函式 型別名 函式名 形參 空函式 程式設計時往往需要確定若干個模組,...