目标文件 (.o) 与单个文件库的头文件?

Object file (.o) vs header file for a single file library?

说我的库只是几个函数,可以整齐地放入 1 个文件中,不需要任何外部依赖项。那么,将该库编译成 .o 目标文件并以这种方式分发而不是仅将其作为头文件提供,是否有任何 优势?我似乎想不出任何东西,虽然我只是一个初学者。

并且如果使用目标文件有优势,是否有任何理由将该单个目标文件打包到存档 (.a) 中,而不是分发目标文件独自一人?

对于像这样的小型库,在 .o 文件中实现它确实没有任何优势 - 无论如何您还必须提供 header。对于较大的库,事情变得不那么明显 - linking object 代码通常比编译大量 C++ 文本更快,无论如何你都必须 link,但另一方面 header-only 文件使用和分发更方便。

不同之处在于(单个 object 文件或多个文件),库链接机制允许您指定链接器应自动找到这些文件的路径,而您不能这样做单个 object 个文件。

因此,无论您的库只包含一个 object 文件还是多个文件都没有关系。
提供图书馆将是正确的方式。

and distributing it that way rather than just providing it as a header file?

如果您可以在单个 header 中提供所有实现,那是更好的选择。

唯一的 "advantage" 如果您不想让您的客户访问您的源代码实现,而只是想提供 header 函数原型 + 二进制文件 object.

如果您同意客户看到您的实施,那么 header-only 库可能是一个很好的解决方案。