C语言里面预处理自定义库函数和系统自带的库函数有什么区别吗?

1:在xx.h里面写函数声明,在xx.c里面定义函数语句,在主文件里面预处理xx.h(include“xx.h”)
2:直接在xx.h里面定义语句,在主文件里面预处理xx.h(include“xx.h”)。那么问题来了,我想知道2这种里面的具体需要怎么写?还需要声明函数吗?这种预处理自定义函数库和系统自带库函数有什么区别吗?

第1个回答  2015-09-26
没有本质区别。
举例
[mylib.h]
void fun1(int a,int b);
int fun2();
[mylib.c]
#include "mylib.h"
void fun1(int a,int b) { .... }
int fun2() { .... }追问

为什么mylib.c里面还要再预处理mylib.h?

可以不写吗?

追答

这是因为,有时mylib中的fun1也需要调用相同库中的其他函数,比如fun2,如果不包含头文件编译程序就不知道调用规则了。

追问

你的意思mylib.h里面包含了例如系统库函数,然后mylib.c直接预处理mylib.h就不需要预处理其他头文件了对吧

追答

比如在mylib中fun1函数要调用fun2函数,因为fun2函数出现在fun1之后,那么编译程序就要求在编译fun1之前你必须告诉编译程序fun2的调用规则,所以就要在fun1函数之前写上一句:
int fun2();这样就说明了,如果mylib.c中函数很多,你可能就要写出所有这些调用规则,比如在fun1函数之前你要写:
void fun1(int a,int b);
int fun2();
如果把这两句写到一个mylib.h之中,那么你就需要#include"mylib.h"这样就等同于说明了这两个函数的调用规则,供mylib.c中所有调用时进行参考。
头文件的作用之一就是说明函数调用规则。比如你如果程序中不写#include而在程序中有printf语句,编译程序就会报错,不知道printf的调用规则了。

本回答被网友采纳