8

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

4

7 回答 7

13

一般来说,它真的可能不那么普遍:

.h(头文件)文件用于声明多次使用的东西,并#include在其他文件中

.cpp(实现)文件用于其他所有内容,几乎#include从不

于 2010-01-02T00:31:43.653 回答
4

从技术上讲,没有区别。C++ 允许您将代码以任何格式放在任何文件中,并且它应该可以工作。

按照惯例,您将声明(基本上,构成 API 的声明)放在 .h 文件中,称为“标头”。.cpp 文件用于代码的实际“胆量”——实现细节。

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

于 2010-01-02T00:37:02.887 回答
2

按照惯例,.h 文件是你#include 的东西。CPP 文件是您添加到项目中的东西,用于编译成单独的目标文件,然后传递给链接器。

于 2010-01-02T00:31:14.263 回答
1

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

于 2010-01-02T00:31:48.043 回答
1

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

按照惯例,不同的文件扩展名用于指示文件的内容。在 C 程序中,您倾向于看到 .h 和 .c 文件,而在 C++ 中,.hpp 和 .cpp 具有相同的用途。

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

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

于 2010-01-02T01:17:25.887 回答
0

如果我错了,请纠正我,但是,

当你#include 某些东西时,它或多或少地将整个包含的文件插入到包含命令的文件中;也就是说,当我在“genericTools.cpp”中包含“macros.h”时,“macros.h”的全部内容此时都放在“genericTools.cpp”中。这就是为什么您需要使用“#pragma once”之类的东西或其他保护措施,以防止包含相同的文件两次。

值得注意的是,模板化代码需要完全位于您将要包含在其他地方的文件中。(我不确定这一点 - 可以从包含的文件中省略模板特化,并像普通函数一样链接吗?)

于 2010-01-02T03:40:02.620 回答
0

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

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

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

于 2016-08-09T16:34:23.567 回答