web-dev-qa-db-ja.com

stdafx.hの目的

ファイルの目的は何ですかstdafx.hおよびプリコンパイル済みヘッダーの意味は?

39
ckv

stdafx.hは、Microsoft Visual Studioによって生成されたファイルですIDEウィザード、標準システムとプロジェクト固有頻繁に使用されるがほとんど変更されないインクルードファイル。互換性のあるコンパイラ(たとえば、Visual C++ 6.0以降)はこのファイルをプリコンパイルして、全体のコンパイル時間を短縮します

Visual C++は、コンパイルオプション#include "stdafx.h"がオフになっていない限り、ソースファイル/Yu'stdafx.h'の前に何もコンパイルしません(デフォルトで) );その行までのソース内のすべてのコードがすでにコンパイルされていると想定しています。

http://en.wikipedia.org/wiki/Precompiled_header

30
Jorge Ferreira

他の優れた答えを拡張するには:

stdafx.hは、単一のプロジェクトで一般的に使用されるすべてのヘッダーを含むファイルです。これには、たとえば、すべてのWindows定義が含まれます。このファイルには多くのものが含まれているため、コンパイラーはファイルを処理するときに少し遅くなります。これをプリコンパイルすることにより、コンパイラーは処理の大部分をスキップし、何度も繰り返し使用できます。それによって含まれるファイルのいずれも変更されない限り、プリコンパイルされた結果も変更する必要はありません。

名前 - stdafx.hは単なる慣例です。すべてのソースを変更して、代わりに新しいファイルを含める場合、簡単に別の名前に変更できます。

実際のプリコンパイル済みヘッダーファイルを生成するには、プリコンパイル済み出力を生成するための特別なコンパイルフラグを持つプロジェクト内の1つのソースファイルが必要です。慣例により、このファイルの名前はstdafx.cpp、そしてそのソースファイルの設定を調べると、それがどのように違うかがわかります。

13
Mark Ransom

これは通常、プリコンパイル済みヘッダーの名前に使用されます。その正確な名前を使用する必要はありませんが、デフォルトのみです。 VC++およびg ++のプリコンパイル済みヘッダーについて詳しく説明します

コンパイルを高速化するには、プリコンパイル済みヘッダーを使用します。

変更しないヘッダーファイルを配置し、プリコンパイル済みヘッダー内のいくつかのソースファイルで使用するという考え方です。そうすれば、コンパイラーは各コンパイル単位のヘッダーを再処理する必要がなくなります。

6
Brian R. Bondy

これは、コンパイル時間を短縮するための プリコンパイル済みヘッダー です。

2
Pavel Minaev