2010-01-02 118 views
8

我只是想知道.cpp和.h文件之间的区别是什么?我会用什么头文件(.h)以及我将使用什么cpp文件?CPP | .h文件(C++)

+1

作为一个建议,C语言头文件使用'h'文件,C++语言文件使用'hpp'或'hxx'。 C++源文件可以包含C语言头文件,但C源文件不能包含C++头文件。因此,如果头文件包含特定于C++的声明或定义,请使用“hpp”或“hxx”扩展名来命名。 – 2010-01-02 00:37:48

回答

13

一般来说,它真的可能是少了很多一般:

.H(头)文件是被多次使用的东西的声明,并在其他文件#include d

的.cpp(实现)文件是为别的,几乎从来没有#include d

+1

好吧,看看我是否有这个权利;如果我有一个类,比如说InventoryClass,我会把它放在一个.h文件中,然后从一个.cpp文件中调用它的方法。 谢谢你的回答。 :) – 2010-01-02 00:36:54

+2

你通常会在头文件中放入类的声明(即:我有这些字段,方法等)。每种方法都可以在cpp文件中实现。 – 2010-01-02 00:37:59

+0

@ baeltazor是的,这就是主意。 – James 2010-01-02 00:39:43

2

按照惯例,.h文件是你#include的东西。 CPP文件是您添加到项目中以编译为单独的对象文件,然后传递给链接器的内容。

+0

谢谢帕维尔。 – 2010-01-02 00:37:31

1

.h文件被称为头文件。你通常把你的界面放在那里(你想公开的东西)。 cpp文件是你实际实现你的界面的地方。

4

技术上,没有区别。 C++允许您将代码放入任何文件中,并且可以使用任何格式。

按照惯例,你把你的声明(基本上是构成你的API的)放在.h文件中,并且被称为“标题”。 .cpp文件适用于代码的实际“内核” - 实现细节。

通常情况下,您的项目中的其他文件(以及其他项目,如果您正在创建库)中包含#include的头文件,因此编译器可以获得编译所需的接口。 .cpp文件中的实现通常是实现的,因此每个.h文件都有一个.cpp文件“填充”实现。

1

首先,它们都是包含C++编译器或预处理器代码的文本文件。就系统而言,没有区别。

按照惯例,不同的文件扩展名被用来表示文件的内容。在C程序中,您倾向于在C++ .hpp和.cpp中看到.h和.c文件以达到相同的目的。

第一组叫做头文件的.h和.hpp文件主要包含非执行代码,例如常量和函数原型的定义。它们通过#include指令被添加到程序中,并且不仅由程序或库使用,而且由其他程序或库使用,用于声明接口点和合同定义值。它们也用于设置在编译不同操作系统时可能会改变的元数据。

第二组.c和.cpp文件包含库或程序代码的执行部分。

0

纠正我,如果我错了,但

当你#包括的东西,它更多或更少的刀片整个包含文件到一个与包括命令;也就是说,当我包含“genericTools.cpp”中的“macros.h”时,“macros.h”的全部内容将被放置在“genericTools.cpp”中。这就是为什么你需要使用诸如“#pragma once”或其他保护措施,以防止两次包含同一个文件的原因。

值得注意的是,模板化代码需要完全在您将要包括在其他地方的文件中。(我不确定 - 可以从包含的文件中忽略模板专业化,并像正常功能那样链接)

0

.cpp即实现文件是我们的实际程序或代码。 当我们需要在代码中使用不同的内置函数时,我们必须包含头文件.h文件。

这些.h文件包含我们使用的内置函数的实际代码,因此我们可以简单地调用相应的函数。

因此,在我们编译我们的代码时,我们可以看到比我们实际编码更多的行编译数,因为不仅我们的代码被编译,而且随着函数的(代码)(包含在.h文件中)也被编译。