1. 程式人生 > >【C語言】多檔案程式設計

【C語言】多檔案程式設計

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__