编译库与仅头文件的库

compiled libraries vs header only libraries

本文关键字:文件 编译      更新时间:2023-10-16

我是一个c++新手,我试图理解为什么有些库需要先编译。

例如,一些boost库只是头文件(例如msm),其他一些需要编译(例如timer)

我找不到一个好的解释为什么会这样。有人能帮我理解吗?

谢谢

某些类型的东西只保存在头文件中,而不是通常的.h(pp).cpp文件。我所知道的只有模板化的类和函数。

  • 头库更容易使用,但更难编写。你只需要给他们#include
  • 他们有更多的优化机会,但他们需要更长的时间来编译。有更多的代码和更多的上下文需要优化,但这需要时间。
  • 最后但并非最不重要的是,template必须在头文件中定义。

但是,通过使用头文件,人们可以逃避的程度或愿意忍受的程度是有限的。例如,在共享库中处理静态对象,顺便说一下,c++ 标准对静态对象一无所知,有时无法在头文件中完成。