打印

关于C语言的一点问题

[复制链接]
3435|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
米其林r|  楼主 | 2010-9-1 21:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
写大型C程序时,一般把一个固定模块的函数在fun.c定义,并且在fun.h里面声明,且fun.C包含fun.h这个头文件,    但是在main那个文件调用的时候,只需包含fun.h这个文件就行,我就不知道这是个怎么调用的,难道main函数那个文件,看见fun.h这个文件,就会吧fun.C复制过来吗?晕,求助

相关帖子

沙发
思行合一| | 2010-9-1 22:24 | 只看该作者
主函数文件中包含相应模块的头文件即可

使用特权

评论回复
板凳
huzixian| | 2010-9-1 22:46 | 只看该作者
写程序时一般都是一根。c文件挎一个。h文件

使用特权

评论回复
地板
refine19| | 2010-9-6 10:03 | 只看该作者
这个,想仔细了解的话可以看一下编译原理,至于最简单的理解想法就是在使用C的标准库的时候用的#include<sdio.h>,这也是一个头文件,包含了以后也是去寻找C的标准库,去寻找一些声明。
同样的,我们自己的头文件也是,当编译器在编译的时候遇到了不认识的变量或结构体,它自己就回去头文件里面去找,找不到就说没定义。
这样做的好处:使程序更加清晰,另外,自己写的驱动程序可以lib文件的形式提供给用户,用户想要使用什么函数,自己可以去头文件里面找,lib源码用户不必知道,也不能够让用户看到。

使用特权

评论回复
5
hxlwjn| | 2010-9-6 17:26 | 只看该作者
如果你在fun.c里定义了一个函数fun(),在main.c里调用,在编译阶段,即使main.c没有包含fun.h这个文件,也不一定会报错(与编译器设置有关);只有在最后链接的时候才会出现未定义错误。包含fun.h的目的主要是为了进行函数调用检查,尽早发现错误。例如在fun.c里面函数fun()的定义为int fun(int a,int b),在main.c里调用fun(a),编译时就会报错。

使用特权

评论回复
6
lijianchen1987| | 2010-9-11 12:47 | 只看该作者
高手··都是

使用特权

评论回复
7
wufeng198829| | 2010-9-12 09:05 | 只看该作者
在.h文件中申明函数为extern,在编译和连接时,系统会知道Num是一个已经在别处定义的外部变量,并将在另一文件中定义的外部变量的作用域扩展到本文件,在.h文件中可以合法的应用外部变量。所以并不是因为.h文件名字和.c文件名字一起就可以关联,从这点说,A.h换成B.h或者B.c都一样,最本质的还是extern带来的外部函数定义。而include将.h文件包含,相当于#include A.h换成A.h里的所有内容,因此也可以使用A.c里的函数。建议楼主看看extern的用法。不知我理解是否有误,我也是新手啊,欢迎指正。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

340

主题

1587

帖子

3

粉丝