C 多檔案程式設計

2021-10-02 12:25:58 字數 2073 閱讀 5810

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__

#define __multi_read_1_h__

intread

(void);

#endif

//__multi_read_1_h__ (這個注釋表示 #endif 是和第一行的 #ifndef 配對的)

//1. 應該在標頭檔案內容的前後使用預處理指令,這樣做的目的,如果乙個原始檔的多次包含了這個標頭檔案的內容,那麼再編譯這個原始檔的時候,也只會把這個標頭檔案編譯一次

//2. 如果不加這些預處理指令,可能會把頭檔案編譯很多次

//3. 另外為了避免不同的標頭檔案使用同樣的巨集名稱,規定,每個標頭檔案使用的巨集名稱必須要和它的檔名對應

//第乙個預處理指令必須是 #ifndef

//multi_read_1.c

#include

#include

"multi_read_1.h"

intread

(void)/*

兩種編譯方式:

1. gcc mutil_main.c multi_read_1.c

2. make //需要寫 makefile

*/

# 2. 最後把所有的 .o 目標檔案合併成 a.out 可執行檔案

a.out : multi_read_1.o multi_main_1.o

gcc multi_read_1.o multi_main_1.o

# 1. 為每個原始檔單獨寫乙個編譯過程

#下面表示可以根據 multi_read_1.c 原始檔編譯得到叫 multi_read_1.o 的目標檔案

#tab鍵開頭加 gcc -c 就可以編譯乙個不完整的程式

multi_read_1.o : multi_read_1.c

gcc -c multi_read_1.c

multi_main_1.o : multi_main_1.c

gcc -c multi_main_1.c

##真正的 makefile 檔案每一步都是可擴充套件的,上面的只是最簡單的乙個例子

//mutil_main.c

#include

#include

"multi_read_1.h"

//使用extern關鍵字把另乙個原始檔裡的全域性變數再次宣告一下

// extern int val;

intmain()

/*使用extern宣告全域性變數是不會分配記憶體的,所以通常會把它放在標頭檔案裡。

這樣做的好處就是,任何乙個原始檔如果想使用這個全域性變數的話,只用包含這個標頭檔案就可以了

*///multi_read_1.h

#ifndef __multi_read_1_h__

#define __multi_read_1_h__

extern

int val;

void

read

(void);

#endif

//__multi_read_1_h__

//multi_read_1.c

#include

#include

"multi_read_1.h"

//宣告乙個全域性變數

//寫成 static int val; 就會報錯,因為靜態全域性變數的作用域是當前檔案的所有語句

int val;

//read 函式不再使用返回值向呼叫函式傳遞資料

void

read

(void

)

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...

多檔案程式設計

新增乙個原始檔 main1.c include 匯入自己的標頭檔案 include fun2.h int main gcc o hello.exe main1.c fun2功能實現.c fun2.h head.h 沒有什麼先後順序,編譯器會自動找到主函式,再進行檔案的整合 int a 10 int ...