源文件和头文件的关系

菜鸟求问。是不是有一个源文件就要有一个对应的头文件,或者说有一个头文件就要有一个对应的源文件?楼下两位说的正好矛盾,同时请说明为什么?我彻底迷糊了!菜鸟谢过... 菜鸟求问。是不是有一个源文件就要有一个对应的头文件,或者说有一个头文件就要有一个对应的源文件?
楼下两位说的正好矛盾,同时请说明为什么?我彻底迷糊了!菜鸟谢过
展开
 我来答
FrankHB1989
2010-07-23 · TA获得超过4.2万个赞
知道大有可为答主
回答量:4569
采纳率:100%
帮助的人:3134万
展开全部
简单理解,头文件就是在源文件头部用来被包含的文件。这里的包含是#include预处理命令,包含的过程就是把头文件的文本完整地复制到源文件中的对应位置,然后删除此行#include预处理命令。
由于文件包含是预处理器在翻译过程之前完成的,因此和整个编译过程没有必然联系,一个源文件在与处理过程中可以进行任意次文件包含。对于重复的代码(例如函数声明和宏定义),可以写在头文件中给多个源文件包含。当然包含之后会不会对编译造成影响,要看头文件和源文件的内容。
习惯上,一个源文件对应了一个头文件,其中头文件中为extern函数和对象声明和宏定义,源文件里为对应的全局/static对象定义和extern/static函数的实现。但是并非一定要按照这个习惯。头文件的存在是为了被源文件包含,如果只被一个源文件包含,那么相当于把这个头文件放进源文件中代替#include行,此时头文件不是必需的。头文件也可以不对应源文件,当这个头文件声明的函数和对象都定义在库文件中时——比较常见的例子就是标准库的头文件。
====
[原创回答团]

参考资料: 原创

上海巴鲁图工程机械科技有限公司_
2022-05-15 广告
光电编码器,是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量的传感器。光电编码器每转输出60(我们用老板没有说)个脉冲,五线制。其中两根为电源线,三根为脉冲线(A相、B相、Z)。电源的工作电压为 (+5~+24V)直流电源。光... 点击进入详情页
本回答由上海巴鲁图工程机械科技有限公司_提供
hooddayday
2010-07-23 · 超过11用户采纳过TA的回答
知道答主
回答量:45
采纳率:0%
帮助的人:35.2万
展开全部
头文件是已经定义好的一些包含功能函数、数据接口声明的载体文件,因为C语言将输入输出没有做成关键字,所以才导致看上去源文件就要有头文件!而且IDE自带标准库函数健壮性高,时间渐进复杂度低,方便(自己写很麻烦的)好用(对于所有的数据类型通用。PS:数学函数除外)一些,所以才都有。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2010-07-23
展开全部
一般情况下,你在开发平台上写源文件,都要用到平台的函数库,这时,你就需要一个头文件.(当然,头文件还可包含你自己定义的,自己用的)

一个头文件,肯定会对应一个源文件.(有时,一个头文件里面是,一堆头文件的集,但追到底,还是对应一个源文件,除非你定义一堆没意义的头文件).

头文件只要其申明的意义,表示你可以调用的函数集.(你定义的,或者平台定义好的)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liscruel
2010-07-23
知道答主
回答量:6
采纳率:0%
帮助的人:3.8万
展开全部
源文件就是你编译的以.C为后缀名的文件,用来编译、链接、运行,需要的话,用#include" .h"加载头文件(一般以.h为后缀名),即在编译前,把其中的代码包含到源文件中 .
所以源文件不一定要含有头文件,初学者一般都无法很好的写头文件,但是不代表不能够写一个c程序。比如只有一句的“hello world”
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我没有车和房
2010-07-23
知道答主
回答量:27
采纳率:0%
帮助的人:0
展开全部
没有头文件,只有一个源文件,程序照转。
但只有一个头文件,没有源文件,程序转不起来。

////////////////a.cpp/////////////////
int main( int argc, char** argv )
{
return 0;
}
这个可以正常编译、链接、然后运行,放到头文件就不灵了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(9)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式