1

私のプロジェクトでは、いくつかの STL ヘッダーが異なるファイルで使用されています。これらすべてのヘッダーを単一のヘッダーに入れ、そのヘッダーをファイルで使用すると、コンパイラーがヘッダーをプリコンパイルできるようになり、コンパイル時間が短縮される可能性があることを読みました。

正しく理解していれば、次のように書く必要があります。

// stl.hpp
#include <string>
#include <algorithm>
#include <vector>

ここstl.hppで、STL へのアクセスが必要なすべてのファイルに含めます。これは正しいです?

vectorヘッダー ファイルの機能のみを使用するファイルはほとんどありません。しかし、上記の方法に従うと、不要なヘッダーが含まれます。これは何か問題になりますか?ヘッダー ファイルをインクルードし、そこから何も使用しない場合、生成されるコードはありますか?

どんな助けでも素晴らしいでしょう!

4

2 に答える 2

1

基本的に、適切なコンパイラはすべてプリコンパイル済みヘッダーを使用します。すでにコンパイル済みのヘッダーはキャッシュされ変更された場合にのみ再コンパイルされます。

毎回再コンパイルする代わりに、既にコンパイル済みのヘッダーを使用すると、コンパイル時間が短縮されます。

ただし、一般的に使用されるヘッダーを 1 つのファイルに結合するか、各ソース ファイルに個別に含めるかは、コンパイル速度の点で問題ではありません。

于 2016-07-03T14:31:26.820 に答える
0

プリコンパイル済みヘッダーを使用してビルドの高速化を試みる前に、既存のビルドのベンチマーク/タイミングを調べて、高速化に努力する価値があるかどうかを確認する価値があります。

数ダースのファイルしかない場合#include <string>、改善が見られない場合があります。何千ものファイルがある場合は、それだけの価値があるかもしれません。

より優れた情報については、この記事を参照してください: www.cygnus-software.com

于 2009-11-14T20:12:24.270 に答える