C语言头文件的用法!

来源:百度知道 编辑:UC知道 时间:2024/05/29 06:27:52
print.c文件,print函数定义文件
print()
{....}

print.h文件,print函数的声明文件
print();

main.c 主函数,include进print.h,并在其中调用print()函数
main()
{ ...
print();
...
}

如果用gcc只编译main.c,会提示找不到print()函数的定义,只能main.c和print.c一起编译,但这样print.h文件就失去其意义
我想像调用库函数一个,只加头文件即可把函数的实现链接进来
就像:
#include <stdio.h>
main()
{
printf("gjhg");
}

是不是只有把print.c编译后加到函数库后才能这样用吗?
头文件是不是都用来声明函数库里的函数,函数实现放在函数库外能不能实现
怎么实现?
谢谢两位的回答,可都不是我想要的效果!
我现在好像知道这样是不可以实现的,因为类似include <stdio.h>之类的,是在编译源文件后,在函数库里找到相应的编译好后的.o文件,然后将两者链接起来实现的
关键是在最后的链接阶段,像上边的print.c文件不经过编译是不能和主文件链接成可执行文件的。改天试试先把print.c编译,放在函数库所在目录里试试!

直接把函数体print()写在.h文件里不好吗?
include只是把代码引进来而已,当然不用加入函数库。
譬如你#include<stdio.h>等于把stdio.h这个文件的所有源代码加到你的这个C文件的相应位置而已,同样,引用print.h也是一样的效果。
至于寻找路径楼上已经说啦

很容易实现
跟“#include<stdio.h>”是同样的道理,只需在程序的开头加入
#include "print.h"
#include "print.c"
就可以了,在这里文件名用“""”括起来,是让系统编译的时候优先查找用户的工作目录,即mian.c文件和print.c、print.h文件都必须在用户的工作目录内
用“<>”括起来,是让系统编译的时候优先查找C的库目录