源文件和头文件的关系

菜鸟求问。是不是有一个源文件就要有一个对应的头文件,或者说有一个头文件就要有一个对应的源文件?
楼下两位说的正好矛盾,同时请说明为什么?我彻底迷糊了!菜鸟谢过

简单理解,头文件就是在源文件头部用来被包含的文件。这里的包含是#include预处理命令,包含的过程就是把头文件的文本完整地复制到源文件中的对应位置,然后删除此行#include预处理命令。
由于文件包含是预处理器在翻译过程之前完成的,因此和整个编译过程没有必然联系,一个源文件在与处理过程中可以进行任意次文件包含。对于重复的代码(例如函数声明和宏定义),可以写在头文件中给多个源文件包含。当然包含之后会不会对编译造成影响,要看头文件和源文件的内容。
习惯上,一个源文件对应了一个头文件,其中头文件中为extern函数和对象声明和宏定义,源文件里为对应的全局/static对象定义和extern/static函数的实现。但是并非一定要按照这个习惯。头文件的存在是为了被源文件包含,如果只被一个源文件包含,那么相当于把这个头文件放进源文件中代替#include行,此时头文件不是必需的。头文件也可以不对应源文件,当这个头文件声明的函数和对象都定义在库文件中时——比较常见的例子就是标准库的头文件。
====
[原创回答团]

参考资料:原创

温馨提示:内容为网友见解,仅供参考
第1个回答  2010-07-23
头文件是已经定义好的一些包含功能函数、数据接口声明的载体文件,因为C语言将输入输出没有做成关键字,所以才导致看上去源文件就要有头文件!而且IDE自带标准库函数健壮性高,时间渐进复杂度低,方便(自己写很麻烦的)好用(对于所有的数据类型通用。PS:数学函数除外)一些,所以才都有。
第2个回答  2010-07-23
一般情况下,你在开发平台上写源文件,都要用到平台的函数库,这时,你就需要一个头文件.(当然,头文件还可包含你自己定义的,自己用的)

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

头文件只要其申明的意义,表示你可以调用的函数集.(你定义的,或者平台定义好的)
第3个回答  2010-07-23
源文件就是你编译的以.C为后缀名的文件,用来编译、链接、运行,需要的话,用#include" .h"加载头文件(一般以.h为后缀名),即在编译前,把其中的代码包含到源文件中 .
所以源文件不一定要含有头文件,初学者一般都无法很好的写头文件,但是不代表不能够写一个c程序。比如只有一句的“hello world”
第4个回答  2010-07-23
没有头文件,只有一个源文件,程序照转。
但只有一个头文件,没有源文件,程序转不起来。

////////////////a.cpp/////////////////
int main( int argc, char** argv )
{
return 0;
}
这个可以正常编译、链接、然后运行,放到头文件就不灵了。
相似回答