### 多文件編程
多文件編程時一個文件里可以包含多個函數,一個函數只能屬于一個文件。
多文件編程基本步驟:
* 把所有函數分散在多個不同的源文件里,主函數通常單獨占一個文件。
* 為每個源文件編寫配對的以.h作為擴展名的頭文件,主函數所在的源文件不需要配對的頭文件,所有不分配內存的內容都可以寫在頭文件里,頭文件里至少包含配對源文件里所有的函數聲明。
* 在每個源文件里使用#include預處理指令包含必要的頭文件,配對頭文件是必要頭文件,如果頭文件里聲明的函數被源文件使用了則這個頭文件也是必要頭文件。
可以在gcc命令后列出所有源文件的路徑,這樣可以編譯多文件方式編寫的程序。
add.c
add.h
main.c
main.c
#include <stdio.h>
#include "add.h"
int main(){
int num = 0, num1 = 0;
printf("請輸入兩個數字:");
scanf("%d%d", &num, &num1);
printf("求和結果是%d\n", add(num, num1));
return 0;
}
add.h
int add(int, int);
add.c
#include "add.h"
int add(int num, int num1){
return num + num1;
}
可以把程序的編譯過程記錄在Makefile文件里,然后使用make工具根據這個文件的內容完成編譯工作。
頭文件的內容應該被包含在條件編譯的預處理指令中間,這樣可以避免被多次編譯。
#ifndef __ADD_H__
#define __ADD_H__
int add(int, int);
#endif // __ADD__H_
第一個預處理指令必須是#ifndef。
頭文件里的宏名稱需要根據文件名變化得到。
如果想要在一個源文件里使用另外一個源文件里聲明的全局變量就需要使用`extern`關鍵字再次聲明這個變量。
extern int num;
extern 關鍵字聲明變量的語句不會分配內存,通常放在頭文件中。
不可以跨文件使用靜態全局變量。