私はヘッダが「の#include 『stdafx.hを』をやっているとはい、私はそれらをオフにすることができます知っている。しかし、それは私の質問はありませんプリコンパイルを理解。Visual Studio C++で、必要がないファイルでも「StdAfx.h」を含める必要があるのはなぜですか?
あなたがプリコンパイル済みヘッダーを使用している場合は、Visual C++が必要ですevery cppファイルに#StdAfx.hをインクルードします。StdAfx.hのヘッダーを使用していないファイルも含めて、StdAfx.hを1つのファイルにインクルードするのを忘れた場合はエラーです。明白なアプローチは、「StdAfx.hをインクルードするとそのファイルが使用されますが、インクルードするのを忘れてしまった場合、ヘッダーファイルはインクルードされません」VC++がなぜあなたに必要なのか理解できません必要でないときはStdAfx.hをインクルードしてください。通常のヘッダファイルのように扱う方が簡単なようです。
これが必要な理由はありますか?
コンパイルされたヘッダーの全体のポイントは、コンパイル時間を短縮することです。追加のチェックが行われると、コンパイル時間が長くなり、プリコンパイル済みヘッダーの唯一のメリットが無駄になります。 –
なぜそれを言うのですか? VC++は "最初の行が#include"のstdafxの場合にのみ行うことができます。h "はそこにそれらのシンボルをコピーしますが、それ以外は何もしません"。マイクロソフトがそのようにしてより簡単にやっているように見え、ユーザーにとってもより明らかになったようだ。 – user2543623
実際、すべてのファイルに「StdAfx.h」を必要としない* *では、実際にはコンパイル時間が改善されます。プリコンパイルされたシンボルを必要としない.cppファイルにコピーする必要はありません。 – user2543623