【问题标题】:Creating Library in C++在 C++ 中创建库
【发布时间】:2017-10-30 09:44:11
【问题描述】:

我在许多包含两个文件的库中看到过,一个是 .H 文件,另一个是 .CPP 文件。 .h 是一个包含函数原型的头文件,而 .CPP 包含头文件中每个函数的实际 c++ 代码。

我想问一下,我可以制作一个 .h 文件并在其中编写所有 c++ 函数和类。并在必要时在 main.cpp 中包含该 .h 文件

【问题讨论】:

标签: c++ header


【解决方案1】:

是的,你可以。这有时被称为header-only library

当然,由于您的函数可能包含在同一程序的多个 CPP 文件中,因此您需要将它们全部内联(或使用内部链接、静态或匿名命名空间)。

您可以在出色的 boost 图书馆收藏中看到其中的一些。

【讨论】:

    【解决方案2】:

    我想问一下,我可以制作一个 .h 文件并在其中编写所有 c++ 函数和类。并在必要时在 main.cpp 中包含该 .h 文件

    是的,你可以这样做。可以将所有定义内联到头文件中。
    虽然这很不寻常,除非您有一个仅标头(模板)库。

    将定义分离成一个自己的翻译单元的原因之一是,当实现的一些小部分发生更改时,您不必重新编译所有相关代码。

    【讨论】:

      【解决方案3】:

      是的,您可以这样做。头文件中的所有代码都将在编译时粘贴到“main.cpp”文件中。标准是声明在标头或 hpp 中,然后在源代码或 cpp 中完成实现。但是,您可以将其全部放在头文件中并包含头文件,该头文件将在编译后工作。您可以在“main.cpp”中准确声明头文件中的内容,然后将其实现到另一个cpp文件中,而不使用.h文件然后编译它,它将与#include“MyClass.hpp”一样工作(注意我个人将 hpp 用于 c++ 标头,将 h 用于 c 标头,这对我来说更容易。)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-10-26
        • 1970-01-01
        • 1970-01-01
        • 2014-10-08
        • 2019-11-07
        • 1970-01-01
        • 2012-12-19
        • 1970-01-01
        相关资源
        最近更新 更多