C语言代码的头文件与源文件有什么区别?

在代码正确的情况下,把代码建立成头文件,即.h时无法执行程序,而若把代码建立成源文件。即.cpp时则运行成功,说是应该建立成源文件的建立成头文件了,即"h1.h",应该建立成"h1.cpp",应该是"c++ Source File",而不是"C/C++ Header File,是怎么回事?为什么?

大家对头文件都有一定的误解
C,C++程序,本质上只需要
.C,.CPP文件就可以.这两个文件会被编译器编译生成模块.
头文件其实就是一个额外的文本文件,
#include这个预编译命令会把这个文本文件中的内容插入到这个指令的位置.
在CPP文件中使用#include命令来包含一个头文件,相当于把头文件中的代码拷贝到CPP文件中调用该预编译指令的位置.
之所以要用到头文件,那是因为在编译过程中,一个CPP中如果要调用或使用另外一个模块中的函数或其它符号,就必须先写这个函数或符号的声明.
比如
void funB();
void funA()
{
funB();
}
void funB()
{
}
funA要调用funB,你们在funA之前就必须先有funB的声明,有了这个funB的声明,无论funB的定义在哪,funA都能被编译通过了.只要链接时能在所有模块中找到这个funB,你们程序就能链接成功,执行了.
正因为这个关系,所以我们一般为一个CPP中的所有函数都写一个声明在对应的H文件中,这样,其他CPP只要包含了这个H文件,就有了这个CPP中所有函数或符号的声明,就可以使用这个CPP中实现的函数或定义的符号了.没有头文件,程序也是完全可以的,只是你每次调用其他CPP中的函数时,都得自己在CPP中再写一遍你要调用的函数的声明.
说的不够详细,不知道大家能否理解.
头文件就是一个代码文本,放一些声明,让其他源代码文件来包含的.因为会被多个CPP包含,所以当你把定义放到头文件中时,如果有两个或以上地方包含了这个头文件,那么这个定义就也会有多份(因为预处理指令#include 做的是完全的代码拷贝),就会出现重复定义的错误
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-02
.h里面主要放声明,因为其他.cpp可能要引用.h,.h文件由预编译器处理,正式编译器不处理这个文件,所以里面放实现代码会出错
.cpp里面放实现代码,因为正式编译器处理.cpp文件,所以有的项目没有.h文件也可以编译
第2个回答  2013-09-02
所谓的头文件是编译器内置的,在编程时使用的一些函数库;
而源文件是程序员编写的,一个程序的源代码
相似回答