1. 程式人生 > >C語言引用不同路徑下的標頭檔案的方法

C語言引用不同路徑下的標頭檔案的方法

C語言學習筆記,備查:

 

希望在一個A.c檔案中引用另一個B.c檔案的方法,可以將B.c檔案中的方法提取至B.h標頭檔案,然後在B.c和A.c中分別用#include "XXX/B.h"引用。其中XXX/B.h可以是絕對路徑也可以是相對路徑。

舉例:

FindPrime.c檔案中,有個isPrime方法用於判斷是否為素數,希望在Factorization.c檔案中引用:

FindPrime.c程式碼如下:

 1 #include <stdio.h>
 2 
 3 int isPrime(int i);
 4 void printFactorization(int
number); 5 6 void findPrime(int begin, int end) { 7 if (begin > end) { 8 int temp = begin; 9 begin = end; 10 end = temp; 11 } 12 for (int i = begin; i <= end; i++) { 13 if (isPrime(i)) { 14 printf("%d\n", i); 15 } 16 } 17 } 18 19 int isPrime(int i) { 20 for
(int j = 2; j < i; j++) { 21 if (i % j == 0) { 22 return 0; 23 } 24 } 25 return 1; 26 } 27 28 int main() { 29 findPrime(101, 200); 30 }

先將main方法之外的方法提取到標頭檔案FindPrime.h中:

FindPrime.h程式碼如下:

 1 int isPrime(int i);
 2 void printFactorization(int number);
 3 
 4 void findPrime(int
begin, int end) { 5 if (begin > end) { 6 int temp = begin; 7 begin = end; 8 end = temp; 9 } 10 for (int i = begin; i <= end; i++) { 11 if (isPrime(i)) { 12 printf("%d\n", i); 13 } 14 } 15 } 16 17 int isPrime(int i) { 18 for (int j = 2; j < i; j++) { 19 if (i % j == 0) { 20 return 0; 21 } 22 } 23 return 1; 24 }

然後在FindPrime.c中使用預處理指令引用如下(FindPrime.c和FindPrime.h在同一個資料夾):

1 #include <stdio.h>
2 #include "FindPrime.h"
3 
4 int main() {
5   findPrime(101, 200);
6 }

在Factorization.c中引用如下(Factorization.c在quest14資料夾,該資料夾和quest12在同一資料夾下,FindPrime.c和FindPrime.h在quest12資料夾下):

 1 #include <stdio.h>
 2 #include "../quest12/FindPrime.h"
 3 
 4 void printFactorization(int number) {
 5 
 6   int factor = 2;
 7   for (int i = 2; i <= number; i++) {
 8     if (number % i == 0 && isPrime(i)) {
 9       if (i == number) {
10         printf("%d", i);
11       } else {
12         printf("%d * ", i);
13       }
14       factor = i;
15       break;
16     }
17   }
18   printFactorization(number / factor);
19 
20 }
21 
22 void printE(int number) {
23   printf("%d = ", number);
24   printFactorization(number);
25 }
26 
27 int main() {
28   int number;
29   printf("請輸入要因式分解的數:\n");
30   scanf("%d", &number);
31   printE(number);
32 }