cpp头文件有哪些|C语言中的头文件源文件到底是什么东西

㈠ C++中的头文件主要有哪些都有啥作用

一般来说,头文件提供接口,源文件提供实现。但是有些实现比较简单的,也可以直接写在头文件里,这样头文件接口实现一起提供。在编译时,源文件里的实现会被编译成临时文件,运行时刻程序找到头文件里的接口,根据接口找到这些临时文件,来调用它们这些实现。之所以在 C++ 中要使用头文件,最主要的原因是 C++ 的同一个项目可能有多个源代码文件,要命的是这些源代码是分别单独编译的。也就是说,在编译其中一个文件时,编译器并不知道其它文件中定义的内容,如类、全局变量等。这就要求我们必须在要使用某个类、函数或变量的每个文件中声明它,否则 C++ 是无法找到它的。 很多文件可能都需要使用加法。假设有一个文件 b.cpp 需要使用这个函数,那么,它必须先声明它,虽然不需要再重写。 如果有很多文件都要使用这个函数,那么这会变得麻烦,特别的,如果你写了一个类,那么你需要维护大量的声明(对于每一个 public 对象),并且如果你的类的定义发生了改变,你可能不得不改变无数个声明。所以,C++ 语言提出了头文件的概念。你只需要在头文件中声明一次,在实现文件中定义一次,在所有需要用的文件中,就只需要引用这个头文件,相当于每个文件都包含了一个声明。为了防止头文件的重复包含,通常应该使用预处理指令 #define (定义符号)、#ifndef(如果没有定义)、#endif(结束判断)来书写头文件的内容。

㈡ C++头文件中可以包含哪些内容

C++中包含的所有头文件: #include <iostream> #include <cstdio> #include <fstream> #include <algorithm> #include <cmath> #include <deque> #include <vector> #include <queue> #include <string> #include <cstring> #include <map> #include <stack> #include <set> ——————————-

㈢ C++ 头文件与cpp文件

首先,我想说也可以在头文件中把代码写全,但是这样做的话,就会造成代码不易阅读的问题,如果只把类的声明写在头文件中,类的实现写在.cpp文件中,就会解决代码不易阅读的问题。其次,还有个问题就是函数的重复定义的问题,如果你把声明和实现都写在头文件的话,这个头文件如果被其他的文件多次include的时候,就会报有关“重复定义”的错误(当然,如果你在头文件中写类似的宏#ifndef **.h …也可以解决这个问题)。还有就是:在编译的时候,.h 文件不会直接参与编译,.cpp文件是要直接编译的,而通过include "*.h"文件,使得头文件中的代码得到编译。

㈣ C++的头文件和实现文件分别写什么

在C++编程过程中,随着项目的越来越大,代码也会越来越多,并且难以管理和分析。于是,在C++中就要分出了头(.h)文件和实现(.cpp)文件,并且也有了Package 的概念。 对于以C 起步,C#作为“母语”的我刚开始跟着导师学习C++对这方面还是感到很模糊。虽然我可以以C 的知识面对C++的语法规范,用C#的思想领悟C++中类的使用。但是C#中定义和实现是都在一个文件中(其实都是在类里面),而使用C 的时候也只是编程的刚刚起步,所写的程序也只要一个文件就够了。因此对于C++的Package 理解以及.h 文件和.cpp 文件的总是心存纠结。 幸好导师有详细的PPT 让我了解,一次对于Package 的认识就明白多了。简单讲,一个Pack age 就是由同名的.h 和.cpp 文件组成。当然可以少其中任意一个文件:只有.h 文件的Packag e 可以是接口或模板(template)的定义;只有.cpp 文件的Package 可以是一个程序的入口。 当然更具体详细的讲解,欢迎下载导师的教学PPT-Package 来了解更多。 不过我在这里想讲的还是关于.h 文件和.cpp 文件 知道Package 只是相对比较宏观的理解:我们在项目中以Package 为编辑对象来扩展和修正我们的程序。编写代码时具体到应该把什么放到.h 文件,又该什么放在.cpp 文件中,我又迷惑了。 虽然Google 给了我很多的链接,但是大部分的解释都太笼统了:申明写在.h 文件,定义实现写在.cpp 文件。这个解释没有差错,但是真正下手起来,又会发现不知道该把代码往哪里打。 于是我又把这个问题抛给了导师,他很耐心地给我详详细细地表述了如何在C++中进行代码分离。很可惜,第一次我听下了,但是没有听太懂,而且本来对C++就了解不深,所以也没有深刻的印象。 经过几个项目的试炼和体验之后,我又拿出这个问题问导师,他又一次耐心地给我讲解了一遍(我发誓他绝对不是忘记了我曾经问过同样的问题),这次我把它记录了下来。 为了不再忘记,我将它们总结在这里。 概览 非模板类型(none-template) 模板类型(template) 头文件 (.h) 全局变量申明(带extern 限定符) 全局函数的申明 带inline 限定符的全局函数的 带inline 限定符的全局模板函数的申明和定义 非模板类型(none-template) 模板类型(template) 定义 类的定义 类函数成员和数据成员的申明(在类内部) 类定义内的函数定义(相当于i nline) 带static const 限定符的数据成员在类内部的初始化 带inline 限定符的类定义外的函数定义 模板类的定义 模板类成员的申明和定义(定义可以放在类内或者类外,类外不需要写inline) 实现文件 (.cpp) 全局变量的定义(及初始化) 全局函数的定义 (无) 类函数成员的定义 类带static 限定符的数据成员的初始化 *申明:declaration *定义:definitio 头文件 头文件的所有内容,都必须包含在 #ifndef {Filename} #define {Filename} //{Content of head file} #endif 这样才能保证头文件被多个其他文件引用(include)时,内部的数据不会被多次定义而造成错误 inline 限定符 在头文件中,可以对函数用inline 限定符来告知编译器,这段函数非常的简单,可以直接嵌入到调用定义之处。 当然inline 的函数并不一定会被编译器作为inline 来实现,如果函数过于复杂,编译器也会拒绝inline。 因此简单说来,代码最好短到只有3-5 行的才作为inline。有循环,分支,递归的函数都不要用做inline。 对于在类定义内定义实现的函数,编译器自动当做有inline 请求(也是不一定inline 的)。因此在下边,我把带有inline 限定符的函数成员和写在类定义体内的函数成员统称为“要inline 的函数成员” 非模板类型 全局类型 就像前面笼统的话讲的:申明写在.h 文件。 对于函数来讲,没有实现体的函数,就相当于是申明;而对于数据类型(包括基本类型和自定义类型)来说,其申明就需要用extern 来修饰。 然后在.cpp 文件里定义、实现或初始化这些全局函数和全局变量。 不过导师一直反复强调:不许使用全局函数和全局变量。用了之后造成的后果,目前就是交上去的作业项目会扣分。当然不能用自有不能用的理由以及解决方案,不过不在目前的讨论范围内。 自定义类型 对于自定义类型,包括类(class)和结构体(struct),它们的定义都是放在.h 文件中。其成员的申明和定义就比较复杂了,不过看上边的表格,还是比较清晰的。 函数成员 函数成员无论是否带有static 限定符,其申明都放在.h 文件的类定义内部。 对于要inline 的函数成员其定义放在.h 文件;其他函数的实现都放在.cpp 文件中。 数据成员 数据成员的申明与定义都是放在.h 文件的类定义内部。对于数据类型,关键问题是其初始化要放在什么地方进行。 对于只含有static 限定符的数据成员,它的初始化要放在.cpp 文件中。因为它是所有类对象共有的,因此必须对它做合适的初始化。 对于只含有const 限定符的数据成员,它的初始化只能在构造函数的初始化列表中完成。因为它是一经初始化就不能重新赋值,因此它也必须进行合适的初始化。 对于既含有static 限定符,又含有const 限定符的数据成员,它的初始化和定义同时进行。它也是必须进行合适的初始化 对于既没有static 限定符,又没有const 限定符的数据成员,它的值只针对本对象可以随意修改,因此我们并不在意它的初始化什么时候进行。 模板类型 C++中,模板是一把开发利器,它与C#,Java 的泛型很相似,却又不尽相同。以前,我一直只觉得像泛型,模板这种东西我可能一辈子也不可能需要使用到。但是在导师的强制逼迫使用下,我才真正体会到模板的强大,也真正知道要如何去使用模板,更进一步是如何去设计模板。不过这不是三言两语可以讲完的,就不多说了。 对于模板,最重要的一点,就是在定义它的时候,编译器并不会对它进行编译,因为它没有一个实体可用。 只有模板被具体化(specialization)之后(用在特定的类型上),编译器才会根据具体的类型对模板进行编译。 所以才定义模板的时候,会发现编译器基本不会报错(我当时还很开心的:我写代码尽然会没有错误,一气呵成),也做不出智能提示。但是当它被具体用在一个类上之后,错误就会大片大片的出现,却往往无法准确定位。 因此设计模板就有设计模板的一套思路和方式,但是这跟本文的主题也有偏。 因为模板的这种特殊性,它并没有自己的准确定义,因此我们不能把它放在.cpp 文件中,而要把他们全部放在.h 文件中进行书写。这也是为了在模板具体化的时候,能够让编译器可以找到模板的所有定义在哪里,以便真正的定义方法。 至于模板类函数成员的定义放在哪里,导师的意见是放在类定义之外,因为这样当你看类的时候,一目了然地知道有那些方法和数据;我在用Visual Studio 的时候查看到其标准库的实现,都是放在类内部的。 可能是我习惯了C#的风格,我比较喜欢把它们都写在类内部,也因为在开发过程中,所使用的编辑器都有一个强大的功能:代码折叠。 当然还有其他原因就是写在类外部,对于每一个函数成员的实现都需要把模板类型作为限定符写一遍,把类名限定符也要写一遍。

㈤ C++的 头文件

简单来说是这样的(以上面iostream.h为例): 在本文档中要使用一些方法函数如上的cout与cin,但是这些方法函数在本文档中并没有进行声明定义,而它们在iostream.h这个文件中是早就存在的。我们现在就有两种选择以实现cout与cin这两个方法函数:(1)真接在本文档中重新声明定义cout和cin两个方法,然后直接在本文档中使用,以完成对文本的输出输入功能;(2)就是利用iostream.h文件中的cout和cin就,但在使用iostream.h文件中的东西时,我们得首先加上个"#include(头文件)"好让机子知道我们现在可以直接使用该头文件的东西了…不然当你使用“cout”时机子就不知道你是用了哪里的“cout”。 对于为什么加“.h”是这样的:因为在C++中它是分“.h”后缀的头文件与“.cpp”后缀的源文件。简单来说,头文件只对方法与函数进行声明,并不定义(实现)。就如只是将“cout”方法在“iostream.h”中说有个“cout”这个方法,在“iostream.h”中并不对“cout”这个方法进行具体的实现。方法的具体实现是在“.cpp”源文件中的… 还有就是当你把“.h”去掉的话,系统就找不到“isotream.h”文件了,就像你把“欧美少妇.avi”这个AV文件的后缀去掉,你双击它时系统就不知道该用什么软件去打开它了。“isotream.h”是个具体存在的文件,你可以在你的开发工具软件的安装包下面找得到的。不知你看懂了没有…我已经说得尽量通俗了!

㈥ c语言头文件有那些

大哥,你也太粗心了吧~~你的结构体明明里面写的是date,可是在下面调用时却是data,这个啊,还好是c语言,连编译都不让你通过,因为c要求变量都应先定义后使用,如果是php什么的,你连错在哪里了都不知道~还有,c的头文件有哪些,这怎么回答呢?我们自己都可以(有时必须)写~这怎么回答

㈦ C++中头文件(.h)和源文件(.cpp)都应该写些什么

”。但是由于本人生性愚钝,学C++的时候,确实花了很久的时间都搞不明白,只是会写一个文件,但不会写一个工程。而用C++编写比较大型的项目时,文件的分割管理确实确实是非常必要的 。下面就非常简洁明了地谈谈头文件(.h)和源文件(.cpp)应该怎么写。 头文件(.h): 写类的声明(包括类里面的成员和方法的声明)、函数原型、#define常数等,但一般来说不写出具体的实现。 在写头文件时需要注意,在开头和结尾处必须按照如下样式加上预编译语句(如下): #ifndef CIRCLE_H#define CIRCLE_H//你的代码写在这里#endif 这样做是为了防止重复编译,不这样做就有可能出错。 至于CIRCLE_H这个名字实际上是无所谓的,你叫什么都行,只要符合规范都行。原则上来说,非常建议把它写成这种形式,因为比较容易和头文件的名字对应。 源文件(.cpp): 源文件主要写实现头文件中已经声明的那些函数的具体代码。需要注意的是,开头必须#include一下实现的头文件,以及要用到的头文件。那么当你需要用到自己写的头文件中的类时,只需要#include进来就行了。 下面举个最简单的例子来描述一下,咱就求个圆面积。 第1步,建立一个空工程(以在VS2003环境下为例)。 第2步,在头文件的文件夹里新建一个名为Circle.h的头文件,它的内容如下: #ifndef CIRCLE_H#define CIRCLE_Hclass Circle{private:double r;//半径public:Circle();//构造函数 Circle(double R);//构造函数 double Area();//求面积函数};#endif 注意到开头结尾的预编译语句。在头文件里,并不写出函数的具体实现。 第3步,要给出Circle类的具体实现,因此,在源文件夹里新建一个Circle.cpp的文件,它的内容如下: #include "Circle.h"Circle::Circle(){this->r=5.0;}Circle::Circle(double R){this->r=R;}double Circle:: Area(){return 3.14*r*r;} 需要注意的是:开头处包含了Circle.h,事实上,只要此cpp文件用到的文件,都要包含进来!这个文件的名字其实不一定要叫Circle.cpp,但非常建议cpp文件与头文件相对应。 最后,我们建一个main.cpp来测试我们写的Circle类,它的内容如下: #include #include "Circle.h"using namespace std;int main(){Circle c(3);cout

㈧ C\C++头文件的作用

1、在C语言中,头文件是程序各部分之间保证信息一致性的桥梁,是连接程序对象定义和使用的纽带。

以.h为扩展名的辅助性文件,也称为头文件;

以.c为扩展名的基本程序文件,也称为源代码文件。

2、用于指定模块接口的声明放在文件中,文件名中应标明其预期用途。

提供Vector实现的.cpp文件还将包括提供其接口的.h文件:

为了帮助编译器确保一致性,提供向量实现的.cpp文件以及包括提供其接口的.h文件:

(8)cpp头文件有哪些扩展阅读

1、C++头文件的声明其实现及使用

例:

////user.cpp:

#include“Vector.h”//获取Vector的接口

#include<cmath>//获取标准库y数学函数接口,包括sqrt()

doublesqrt_sum(Vector&v)

{

doublesum=0;

对于(inti=0;i!=v.size();++i)

sum+=std::sqrt(v[i]);//平方根

之和返回和;

}

㈨ C++编译器怎么用呀,什么是CPP什么是头文件装什么代码用的

VC++,BCB,GCC等都是有名的C++编器工具。CPP文件是C++语言的函数代码文件,HPP是C++语言的头文件再看看别人怎么说的。

㈩ C语言中的头文件,源文件到底是什么东西

1、cpp文件和.h文件有各自的分工,一般来说,h文件中是类的定义和类成员函数的声明专,以及属全局变量定义等;cpp文件是对应h文件中成员函数的代码实现。一般cpp文件代码较多。

2、 一般我们在编译的时候只编译cpp文件,将该cpp包含的h文件设为依赖。从而将这些cpp文件和h文件联系起来


赞 (0)