我終於把C 多檔案程式設計理解透徹了

2021-10-04 19:47:22 字數 1253 閱讀 4255

2、多檔案的編譯

稍微大一點的專案都不會是單個檔案的,多檔案的好處實在太多,模組開發、分工協作、**復用、結構清晰、模組更新…不細扯,直接梳理一下c++源**的檔案型別、多檔案編譯。

c++程式一般分三類檔案:

標頭檔案的存在是為了聯絡多個原始檔,是原始檔之間的介面。c++與c一樣,要求先宣告後使用,可是編譯的時候是單檔案編譯的。看乙個沒有標頭檔案的例子。

void fun(); //必須先宣告,不然呼叫出錯

int main()

#include void fun()

#ifndef header_h

#define header_h

void fun();

#endif

#include void fun(){

std::cout<<"this is fun."《標頭檔案的內容一般都會使用條件編譯預處理語句(如上)包住,防止因為依賴關係多次被包含。

既然知道標頭檔案的作用,那哪些東西應該放在標頭檔案?哪些不能放在標頭檔案?很好理解,如果這部分需要複製給每個相關的cpp,就把它放在標頭檔案,如果被多個cpp複製之後,可能導致它們在鏈結過程出錯,就不要放在標頭檔案。一 一來看:

把頭檔案的東西抽離出去之後,剩下的就可以放在cpp檔案了。在cpp檔案上,除了需要include對應的標頭檔案之外,沒有什麼變化。

儘管都是cpp檔案,還是有必要理解成模組檔案和主程式檔案,二者類似功能的提供者和使用者,在實際中,也常常由不同的人開發。

如果是使用windows下的整合開發環境的,大可直接build,一鍵搞定,但你對這個過程的理解就可能差點。所以我以linux上為例,最簡單的多檔案編譯命令:

g++ main.cpp fun.cpp -o out #列舉所有要編譯的檔案

g++ -c main.cpp -o main.o

g++ -c fun.cpp -o fun.o

g++ main.o fun.o -o out

第二種是不是引起了你的疑惑——這麼麻煩?可是,這種方式提供了乙個優點——模組編譯更新。你只需要編譯你修改過的檔案,再跟其他的鏈結,無需再次對整個專案編譯。

在實際的專案中,專案檔案可不是小數目,無論上面的那種方式,你都需要一一列出檔案,不實際。ide工具自然沒有這種煩惱。不過linux也會使用makefile進行專案管理,實現自動編譯。行了,又多了一樣要學。

C 多檔案程式設計

2.基本規則 3.改造步驟 4.編譯方法 mutil main.c include include multi read 1.h 因為主函式用到了 multi read 1.h 裡宣告的read函式 intmain multi read 1.h ifndef multi read 1 h defin...

C語言 多檔案程式設計

1 多檔案程式設計,乙個檔案可以有多個函式,但是乙個函式最多乙個檔案 2 多檔案程式設計的步驟 把所有函式分散在多個檔案中,通常主函式在單獨的檔案裡 為每個原始檔編寫乙個配對的以.h作為副檔名的標頭檔案,主函式所在的不需要,不分配記憶體的內容都可以寫在標頭檔案裡,標頭檔案裡至少要包含配對原始檔裡所有...

C語言 多檔案程式設計

分檔案程式設計 1 當乙個專案比較大時,往往都是分檔案,這時候有可能不小心把同乙個標頭檔案 include 多次,或者標頭檔案巢狀包含。a.h 中包含 b.h include b.h b.h 中包含 a.h include a.h main.c 中使用其中標頭檔案 include a.h intma...