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 }