19

私が理解していることから、stdafx.h はプリコンパイル済みのヘッダー ファイルであり、Visual Studio でコンパイル時間を短縮するために使用されます。Visual Studio 2012 で C++ プロジェクトを作成すると、stdafx.cpp もあります。誰か stdafx.h と stdafx.cpp の関係を説明できますか?

4

1 に答える 1

32

プリコンパイル済みヘッダーを使用すると、プロジェクト内の .cpp ファイルのコンパイルを大幅に高速化できます。慣例により、プリコンパイルするすべての .h ファイルを #include するのは stdafx.h です。任意の名前を付けることができますが、プロジェクト テンプレートは stdafx.h を選択するだけです。

しかし、それが機能する前に、 stdafx.h を #include し、最初にコンパイルされる .cpp ファイルが1 つ必要です。プロジェクト内の他のすべての .cpp ファイルの前。これが完了すると、コンパイラは作成された .pch ファイルを使用して他のすべての .cpp ファイルをすばやくコンパイルできるようになり、ヘッダーを実際に #include する必要がなくなります。

Stdafx.cpp は、その 1 つの .cpp ファイルです。他のすべての .cpp ファイルとは異なる設定があり、/Yc でビルドされます。「プリコンパイル済みヘッダー ファイルを作成する」オプション。


更新: 28 年後、Microsoft は VS2019 で「以前は標準フレームワークがありましたが、誰も見たことがない」という慣行を破りました。"stdafx" の代わりに "pch" という名前になりました。より明白な頭字語です。名前が変わっただけで、仕組みは同じです。

于 2013-07-28T03:37:05.787 に答える