C語言引用不同路徑下的標頭檔案的方法
阿新 • • 發佈:2018-11-22
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(intnumber); 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(intbegin, 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 }