C++プリコンパイル済みヘッダー機能に関する2つの質問があります。サイズが巨大なC++プリコンパイル済みヘッダー
1. .gchファイルを(GCCを使用して)作成すると実際に何が起こっているのですか?
2.これらのファイルはサイズが非常に大きいですが、最終実行ファイルは非常に小さいです。
C++プリコンパイル済みヘッダー機能に関する2つの質問があります。サイズが巨大なC++プリコンパイル済みヘッダー
1. .gchファイルを(GCCを使用して)作成すると実際に何が起こっているのですか?
2.これらのファイルはサイズが非常に大きいですが、最終実行ファイルは非常に小さいです。
あなたはヘッダをプリコンパイルすると、それはすべての通常のコンパイルのように始まります:
通常、これはファイル.cpp
で行われ、実際にASTをコンパイルして実行可能コードを生成するために、その後に続きます。ただし、ヘッダーのプリコンパイルが停止し、コンパイラはASTを.gch
ファイル内にダンプします。
このプリコンパイル済みヘッダーをさらに使用すると、コンパイラーはファイルからASTを直接ロードしてそこから取得し、上記の高価な処理をスキップできます。
.gch
ファイルは、元のヘッダーに暗黙のうちに多くの情報が含まれているため、膨大です。しかし、最終的な実行可能ファイルのサイズとは関係がありません。コンパイルされたヘッダーの有無にかかわらずコンパイルすると、まったく同じ結果が生成されます。