header-only相关内容

我什么时候应该考虑使库仅标头?

显然模板库只需要是标头,但是对于非模板,什么时候应该使它们只标头呢? 解决方案 如果您认为非模板库可能仅是标头,请考虑将其分为两个文件,然后提供第三个文件,该文件同时包含和.cpp(带有包含保护). 然后,在许多不同的TU中使用您的库的任何人,如果怀疑这可能会花费大量的编译时间,就可以轻松进行更改以对其进行测试. 一旦您知道用户可以选择哪种方式使用该库,答案就可能变成“尽可能提 ..
发布时间:2020-07-23 05:00:18 其他开发

如何创建仅标头的库?

我想将正在使用的库打包为仅标头的库,以使客户端更易于使用. (它很小,实际上没有理由将其放在单独的翻译单元中).但是,我不能简单地将代码放在标头中,因为这违反了C ++的一个定义规则. (假设库头包含在一个客户项目的多个翻译单元中) 一个人如何修改一个库以使其仅标头? 解决方案 您可以使用inline关键字: // header.hpp (included into multi ..
发布时间:2020-07-23 04:59:12 其他开发

C ++仅标头模板库

查看该项目(http://www.savarese.com/software/libssrckdtree/),我发现了“仅C ++标头模板库"的定义.目前,我具有基本的C ++知识,但想知道这到底意味着什么,以及为什么这个人在此项目中使用它 解决方案 这意味着模板(功能模板或类模板)的所有定义仅在标头中.没有.cpp文件.只有.h个文件(或某些其他扩展名,例如.hpp或根本没有扩展名,例如 ..
发布时间:2020-07-23 04:59:09 其他开发

CLion不解析来自外部库的标头

您好! 前一段时间,我使用XCode在C ++ 1x中创建了一个大头文件库。库的当前布局是()( ls -R sponf )的部分输出 sponf / sponf: ancestors sponf.h sponf_utilities.h 类别sponf_children.h实用程序 children sponf_macros.h sponf / sponf / ance ..
发布时间:2016-10-27 01:58:40 C/C++

CMake:target_include_directories()打印一个错误,当我尝试添加源目录本身或其中一个子目录

我正在写一个C ++库(仅头),并使用CMake生成我的(Visual Studio)项目和解决方案文件。我也编写了一个测试套件,它是同一个CMake项目的一部分。 我的问题发生在当我调用target_include_directories()只有库,所以我的库的消费者可能会找到它的头文件。我收到以下错误消息(即使生成未中止)。 CMakeLists.txt中的CMake错误: 目标 ..
发布时间:2016-10-23 13:07:21 C/C++

关于仅使用头的c ++库的使用的可量化度量(基准)

我试图找到一个答案,使用SO。有许多问题列出了在c ++中构建一个只有头文件的库的各种优缺点,但是我还没有找到一个可量化的方法。 因此,在可量化的术语中,使用传统上分离的c ++头文件和实现文件与头文件有什么区别? ,我假设模板没有使用(因为它们只需要头)。 要详细说明,我列出了我从文章中看到的是利弊。显然,一些不容易量化(例如易于使用),因此对于可量化的比较是无用的。 只 ..
发布时间:2016-10-22 17:09:25 C/C++

如何在仅标题库中拥有静态数据成员?

在非模板化库类中有一个静态成员的最好方法是 ,而不会给类用户定义成员的负担? 说我想要提供这个类: class i_want_a_static_member { static expensive_resource static_resource_; public: void foo() { static_resource_.bar(); } }; ..
发布时间:2016-10-14 20:45:33 C/C++

标题库的优点

标头唯一库的好处是什么,为什么要这样写呢? 解决方案 有些情况下只有标题库是唯一的选项,例如在处理模板时。 只有标题库也意味着你不必担心可能使用库的不同平台。当你分离实现时,通常这样做是为了隐藏实现细节,并将库作为头和库的组合来分发( lib , dll '或 .so 文件)。这些当然必须为您提供支持的所有不同的操作系统/版本编译。 您还可以分发实现文件,但这将意味着一个额外的 ..
发布时间:2016-10-13 12:09:09 C/C++