【问题标题】:CPP | .h files (C++)CPP | .h 文件 (C++)
【发布时间】:2010-01-02 00:28:59
【问题描述】:

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

【问题讨论】:

  • 作为建议,C 语言头文件使用h 文件,C++ 语言文件使用hpphxx。 C++ 源文件可以包含 C 语言头文件,但 C 源文件不能包含 C++ 头文件。因此,如果头文件包含 C++ 特定的声明或定义,请使用 hpphxx 扩展名。

标签: c++ header-files


【解决方案1】:

一般来说,它确实可能不那么一般:

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

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

【讨论】:

  • 好的,看看我是否做对了;如果我有一个类,比如 InventoryClass,我会把它放在一个 .h 文件中,然后从 .cpp 文件中调用它的方法?也谢谢你的回答。 :)
  • 您通常会将类的声明(即:我有这些字段、方法等)放在头文件中。每个方法都会在 cpp 文件中实现。
  • @baeltazor 是的,就是这样。
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

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

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

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

        【讨论】:

          【解决方案6】:

          如果我错了,请纠正我,

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

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

          【讨论】:

            【解决方案7】:

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

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

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2020-09-26
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-12-28
              相关资源
              最近更新 更多