1

私はC++を初めて使用し、一部のライブラリを最初にコンパイルする必要がある理由を理解しようとしています。

たとえば、一部のBoostライブラリはヘッダーのみ(たとえばmsm)であり、他の一部はコンパイルする必要があります(たとえばタイマー)

なぜそうなのか、いい説明が見つかりません。誰かが私を理解するのを手伝ってもらえますか?

ありがとうございました

4

2 に答える 2

1

.h(pp)特定の種類のものは、通常のファイルではなく、ヘッダーにのみ保持され.cppます。私が知っているのは、テンプレート化されたクラスと関数だけです。ブーストはこれを利用していると確信しています。

于 2012-12-26T06:03:02.540 に答える
1
  • ヘッダーのみのライブラリは使いやすいですが、書くのは難しいです。あなたは#include彼らに必要なだけです。
  • 最適化の機会は増えますが、コンパイルに時間がかかります。最適化するコードとコンテキストは増えますが、それには時間がかかります。
  • 最後になりましたが、templatesはヘッダーファイルで定義する必要があります。

しかし、ヘッダーファイルを使用することで、どれだけ逃げることができるか、またはどれだけ耐えることができるかには限界があります。たとえば、共有ライブラリ内の静的オブジェクトの処理は、C ++標準が何も知らないため、ヘッダーで実行できない場合があります。

于 2012-12-26T06:05:00.050 に答える