C编程笔录(一)1.0: 在C编程中,函数的声明为什么都习惯的写在头文件中,然后在需要调用的地方使用#include来包含?

xiaoxiao2021-02-28  14

问题:在C编程中,函数的声明为什么都习惯的写在头文件中,然后在需要调用的地方使用#include来包含?

带着这个问题,我创建了三个.c文件,分别命名a.c、b.c和c.c,并进行如下编程:

a.c文件:

int add(int a, int b)

{

 return a + b;

}

b.c文件:

#include <stdio.h>

int add(int a, int b);

void print_sum(int a, int b)

{

 printf("test two, sum=%d", add(a, b));

}

c.c文件:

#include <stdio.h>

int add(int a, int b);

void print_sum(int a, int b);

void main()

{

 printf("test one, sum=%d", add(99 + 88));

 print_sum(100, 200);

while(1);

}

从代码看,因为需求,int add(int a, int b);函数声明在b.c和c.c文件中都拷贝了一份,如果该函数的函数名、返回值或者形参后期需要修改,那么这时需要在a.c、b.c和c.c文件内都进行修改,如果拷贝的份数越多,那么后期代码修改同步时的维护工作量就越大。

OK,回到问题:在C编程中,函数的声明为什么都习惯的写在头文件中,然后在需要调用的地方使用#include来包含?

上面的例子代码中并没有将int add(int a, int b);函数的声明写在在头文件中,所以导致了“有多少处函数声明拷贝,后期函数声明修改就需要同步多少处代码”问题,那么下面改成将函数的声明写在头文件中,使用#include的方式来包含头文件:

再创建两个头文件,分别为a.h和b.h,并且进行如下编程:

a.h文件:

#ifndef __A_H__

#define __A_H__

int add(int, int);

#endif

b.h文件:

#ifndef __B_H__

#define __B_H__

#include <stdio.h>

#include "a.h"

void print_sum(int a, int b);

#endif

然后分别修改b.c和c.c文件如下:

b.c文件:

#include "b.h"

void print_sum(int a, int b)

{

 printf("test two, sum=%d", add(a, b));

}

c.c文件:

#include "b.h"

void main()

{

 printf("test one, sum=%d", add(99 + 88));

 print_sum(100, 200);

while(1);

}

修改后的程序运行结果和修改前的一样,分析修改前后代码发现,将函数声明编写在一个头文件中,如果后期函数声明需要修改,那么只需要修改一个头文件里的函数声明即可。

总结问题答案:

函数的声明都习惯的编写在头文件中,然后在需要调用的地方使用#include包含可以避免函数的声明多处拷贝而导致的后期维护难问题。

转载请注明原文地址: https://www.6miu.com/read-2300073.html

最新回复(0)