【C語言】多檔案程式設計
阿新 • • 發佈:2019-01-05
1、多檔案程式設計,一個檔案可以有多個函式,但是一個函式最多一個檔案
2、多檔案程式設計的步驟:
• 把所有函式分散在多個檔案中,通常主函式在單獨的檔案裡
• 為每個原始檔編寫一個配對的以.h作為副檔名的標頭檔案,主函式所在的不需要,不分配記憶體的內容都可以寫在標頭檔案裡,標頭檔案裡至少要包含配對原始檔裡所有函式的宣告
• 在所有原始檔裡使用#include預處理指令包含所需要的標頭檔案,配對標頭檔案是一種需要的標頭檔案,如果原始檔裡聲明瞭標頭檔案裡宣告的函式,也是需要的標頭檔案
3、在GCC命令後列出所有原始檔的路徑就可以編譯多檔案程式
eg:lxl@ubuntu :~/day/day14$ gcc text1.c text1-1.c
4、可以把多檔案程式的編譯過程記錄在Makefile檔案裡,然後使用make工具完成編譯
#ifndef __TEXT_H__//用條件編譯防止text.h被多次包含
// 使用條件編譯可以避免重複編譯,
// 需要注意的是要使用#ifndef語句
// 不同標頭檔案的巨集名稱必須不同
// 標頭檔案產用的巨集名稱應該是根據標頭檔案的路徑得來的
#define __TEXT_H__
int add(int ,int);//標頭檔案裡至少要包含配對原始檔裡所有函式的宣告
#endif //__TEXT_H__
5、從一個原始檔裡使用另一個原始檔的全域性變數時,需要使用extern關鍵字再次宣告這個全域性變數先在函式裡新增變數,再在標頭檔案用extern宣告
6、使用exrern關鍵字宣告變數時,通常放在標頭檔案裡
7、不可以跨檔案使用靜態全域性變數
練習:
多檔案程式設計:
text1.c:
/*
* 多檔案程式設計
* */
#include <stdio.h>
#include "text1-1.h"
int main() {
int num = add(3 , 8);
printf("num:%d\n", num);
return 0;
}
text1-1.c:
#include "text1-1.h"//將宣告本函式的標頭檔案包含進來
//如果還有其他函式也需要包含進
int add(int num, int num1) {
return num +num1;
}
text1-1.h:
#ifndef __TEXT_H__//如果一個檔案包含了此標頭檔案多次,使用這種方法,即在第一次編譯時沒有定義ABC的巨集,執行了下面的所有,第二次再遇到編譯此檔案時ABC已經被定義,就不會再編譯
// 使用條件編譯可以避免重複編譯,
// 粗要注意的是要使用#ifndef語句
// 不同標頭檔案的巨集名稱必須不同
// 標頭檔案產用的巨集名稱應該是根據標頭檔案的路徑得來的
#define __TEXT_H__
int add(int,int);//標頭檔案裡至少要包含配對原始檔裡所有函式的宣告
#endif //__TEXT_H__