1

我对 C++ 很陌生,我试图理解为什么需要先编译一些库。

例如,某些 boost 库仅是标头(例如 msm),而另一些则需要编译(例如 timer)

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

谢谢

4

2 回答 2

1

某些类型的东西只保存在标题中,而不是通常的.h(pp).cpp文件。我知道的只有一个是模板化的类和函数。我确信 boost 会利用这一点。

于 2012-12-26T06:03:02.540 回答
1
  • 仅标头库更易于使用但更难编写。你只需要#include他们。
  • 它们有更多的优化机会,但编译时间更长。有更多代码和更多上下文需要优化,但这需要时间。
  • 最后但同样重要的是,templates 必须在头文件中定义。

但是,通过使用头文件,可以逃脱多少,或者愿意忍受多少是有限度的。例如,处理共享库中的静态对象,顺便说一下,C++标准对此一无所知,有时只是不能在头文件中完成。

于 2012-12-26T06:05:00.050 回答