头文件一般包含哪些内容,C中的头文件是什么意思

1,C中的头文件是什么意思在C语言家族程序中,头文件被大量使用 。一般而言,每个C++/C程序通常由头文件(header files)和定义文件(definition files)组成 。头文件作为一种包含功能函数、数据接口声明的载体文件,主要用于保存程序的声明(declaration) , 而定义文件用于保存程序的实现 (implementation) 。.c就是你写的程序文件 。头文件一般由四部分内容组成:(1)头文件开头处的版权和版本声明;(2)预处理块;(3)inline函数的定义;(4)函数和类结构声明等 。在头文件中 , 用 ifndef/define/endif结构产生预处理块,用 #include 格式来引用库的头文件 。你在程序中用到的一些函数,还有其他的一些与系统相关的接口使用的命令和函数被包括在内在C++里面我们是使用头文件来包含一些共同使用的数据,函数,类以及其他的一些.这些东西都是不可以缺少的,因为在这时候是单独的编译一些文件.那么需要一些连接因此需要一些头文件包含必须的一些共享的数据.保证每个单独的头文件都可以完整的编译通过.文件包含就是说,你在这个CPP中需要用到的一些函数被包含在哪里,就引用那个头文件
2,头文件中都放什么东西一般来说如果一个程序包含了头文件和实现文件比如C++的,CPP为实现文件而H就为头文件.那么通常情况下一些变量的声明,函数声明,类声明,结构体的定义这些东西一般都放在头文件中.而实现文件则是这些函数具体的实现方法等.而有些人编写的时候可能没有头文件,只有个实现文件(很多人用VC写的控制台程序就这样),这不能说他没有声明,只是他把声明写在了实现文件里,这也是可以的.另外有个特点,拿VC的编译器来说,他只会编译实现文件(.CPP)而当实现文件里遇到编译器的包含指令 #include 的时候他就会自动展开这个包含的头文件,所以有些时候引用头文件的顺序还有很微妙的关系,先引用哪个后引用哪个非常微妙,这个等遇到了自然就知道了.附带一句:头文件是不参加编译的.首先,系统自带的h文件,你可以在集成开发环境中指定的include文件夹下看个究竟 。比如,你使用的是turboc , 那么系统自带的头文件默认位置是turboc所在文件夹下的include文件夹中 。其次,如果你自己有编写头文件,那么你可以使用#include将自己写的那个头文件包含进来 。不过要注意,此种情况通常必须使用双引号格式,不能使用<>符号 。??要是是标准的写法的话:头文件应该包含:函数的声明(注意:不是定义?。。。?,一些预编译指令,(有时候)extern的全局变量 。【头文件一般包含哪些内容,C中的头文件是什么意思】
3,什么是头文件XXX.h有软件自带的、常用的 。也可以自己编 。与XXX.c,XXX.cpp的区别是,一般做好了以后会经常用 , 在不同的程序中使用 。在C语言家族程序中,头文件被大量使用 。一般而言,每个C++/C程序通常由头文件(header files)和定义文件(definition files)组成 。头文件作为一种包含功能函数、数据接口声明的载体文件,用于保存程序的声明(declaration),而定义文件用于保存程序的实现 (implementation) 。C++/C程序的头文件以“.h”为后缀 。以下是假设名称为 graphics.h的头文件:#ifndef GRAPHICS_H (作用:防止graphics.h被重复引用)#define GRAPHICS_H#include.... (作用:引用标准库的头文件)...#include... (作用:引用非标准库的头文件)...void Function1(...); (作用:全局函数声明)...class Box (作用:类结构声明){...};#endif从以上例子可以看出,头文件一般由三部分内容组成:(1)头文件开头处的版权和版本声明;(2)预处理块;(3)函数和类结构声明等 。在头文件中,用 ifndef/define/endif结构产生预处理块,用 #include 格式来引用库的头文件 。头文件的这种结构,是利用C语言进行开发软件所通常具备的 , 属于公有知识 。一般在一个应用开发体系中,功能的真正逻辑实现是以硬件层为基础,在驱动程序、功能层程序以及用户的应用程序中完成的 。根据以上示例 , 可以发现头文件的主要作用在于调用库功能,对各个被调用函数给出一个描述,其本身不包含程序的逻辑实现代码 , 它只起描述性作用,告诉应用程序通过相应途径寻找相应功能函数的真正逻辑实现代码 。用户程序只需要按照头文件中的接口声明来调用库功能,编译器会从库中提取相应的代码 。从以上结构图来看,头文件是用户应用程序和函数库之间的桥梁和纽带 。在整个软件中,头文件不是最重要的部分,但它是C语言家族中不可缺少的组成部分 。做一个不算很恰当的比喻 , 头文件就像是一本书中的目录,读者(用户程序)通过目录,可以很方便就查阅其需要的内容(函数库) 。在一本书中 , 目录固然重要,但绝对不是一本书的核心的、最重要的部分 。xxx.h文件
4,涉及到派生类的头文件的包含在“单一继承”这种最普通的形式中,派生类仅有一个基类 。在类的层次设计中 , 可以发现一些普遍的特性,即派生类总是同基类有“kind of”关系 。另一个值得注意点是Book既是派生类(从PrintedDocument中派生),也是基类(PaperbackBook是从Book派生的) 。下面的例子是这种类层次的一个轮廓性的说明 。class PrintedDocument//成员表};//Book是从PrintedDocument中派生的class Book:public PrintedDocument//成员表};//PaperbackBook是从Book中派生class PaperbackBook: public Book//成员表};先给你说明一下,一般头文件只是用来声明函数或者类,但不定义他们,定义他们一般在源文件(cpp)中定义 , 因此如果只在头文件中声明函数或类的话,就没必要包含其他文件,也就是不需要使用#include语句 , 一般只有源文件中才会用到#include语句 。下面给你介绍一下具体的内容 。把程序写在多个文件中1、对于大型程序一般将一个程序写在多个文件中:一般把程序分成三部分,头文件和两个源文件,其中头文件包含类的声明或函数的声明 。其中一个源文件就包含这些类和函数的定义 , 而另一个源文件则是主程序 。2、将程序放在多个文件中的好处是比如有多个这样的程序需要在头文件中声明的这些函数,则只需在该程序中把这些头文件包含进来 。头文件和包含头文件定义的文件就组成了一个软件包,可用于各种程序中 。3、通常不应将函数声明和变量声明放在头文件中 。因为如果头文件包含一个函数定义,然后在同一程序的其他两个文件中包含了这个头文件,则同一程序中将包含同一函数的两个定义,除非是内联函数,否则就将出错 。4、头文件一般包含:函数原型,使用#define或const定义的符号常量,结构声明,类声明,模板声明,内联函数 。5、包含头文件时使用#include关见字,在#include后面文件名最好使用双引号不要使用尖括号,比如#include “eee.h”使用双引号和尖括号的区别是使用尖括号时编译器将首先在标准头文件中查找 , 而使用双引号则首先在当前工作目录或源代码目录查找 。6、不能在同一个文件中包含头文件两次 。一般不会犯这种错误,但是当使用包含了一个头文件的文件时有可能在不知情的情况下犯这个错误 。7、使用预处理器指令#ifndef来解决上面的问题 。语名#ifndef hyong…..#endi表示仅当以前没有使用预处理器编译指令#define定义的名称hyong时才处理#ifndef….#endif之间的语句 。#define通常创建符号常量,比如#define H 3;把常量3定义为名字H,但只使用#define就能创建名称,比如#define H;就创建了一个名称H 。完整的#ifndef….#endif语句的例子如下:#ifndef HY#define HYvoid g(); #endif;该语句的执行顺序为:编译器首先遇到该头文件时,名称HY没有被定义,这时编译器就将查看#ifndef….#endif之间的内容 , 并读取到#define HY这一行 。如果在同一文件中遇到包含该头文件的代码时,编译器就知道HY这个名字已经被#define定义了,从而跳过#ifndef….#endif之间的内容 。注意这种方法并不能防止头文件被包含两次,而只是让他忽略除第一次包含之外的所有内容 。//将程序放在多个文件中的示例:以下示例有两个头文件hyong.h和hy.h其中hyong.h中只声明了一个函数,而hy.h中定义了一个函数(不推见这样做) 。有两个源文件,hyong.cpp中定义了hyong.h中声明的函数 , 而ff.cpp是主文件 。对于类与函数是类似的 。//头文件hyong.h的内容如下#ifndef HY //一般在头文件都都使用这种格式以防止头文件在同一文件中被包含两次 。语名#ifndef hyong…..#endi表示仅当以前没有使用预处理器编译指令#define定义的名称hyong时才处理#ifndef….#endif之间的语句 。#define HY//在这里用define定义一个名字HY,以便在下次访问到该头文件时,使该名字已经被定义,从而让程序跳过#ifndef….#endif间的语句 。void g();//在头文件中声明一个函数g();#endif//在头文件hy.h中定义函数,一般不允许这样做#include <iostream>using namespace std;void f()//定义头文件中声明的函数的源文件hyong.cpp的内容如下#include "stdafx.h"//注意:在VC++中所有的源文件中都要包含这条语句 。#include "hyong.h"//将头文件hyong.h包含进来,这里使用双引号,而不是引号 , 以便能更快地检查到该头文件中定义的名字#include “hy.h”//注意这里,在这个源文件中把头文件hy包含进来#include <iostream>using namespace std;void g()//主程序源文件ff.cpp的内容如下#include "stdafx.h"#include<iostream>#include "hyong.h"//注意,主程序和hyong.cpp的文件中都包含了这个头文件 。//#include “hy.h”//错误,在同一程序中的另一个文件hyong.cpp中已包含过该头文件,因为f函数是在hy.h这个头文件中定义的,在这里再包含头文件hy.h就会出现在同一程序中定义了两个f()函数的错误 。using namespace std;int main() {g();cout<<"p"<<endl; } //f();//对f函数的调用错误,因为f函数在头文件hy.h中定义,并且不能在主程序文件中再包含头文件hy.h , 在这里就会出现f是未标识的标识符的错误 。可以去掉 base.h 和 sellmanager.h 里 的头文件 。只编译 main 程序,另两文件会自己 include 进来 。所有c++头文件不用 .h 的,加 using namespace std;或者 所有c++头文件用 .h 的,不加 using namespace std;--------------------------------你的主程序有错smcout[] 数组/结构数组 没有声明void main() int i,j=0; smcout[i].display();}// 主程序在这里就结束了

    推荐阅读