BUILDボタンを押したときにコンパイラが正確に何をするかを誰かが実際に説明できれば、私は非常に感謝しています。 ?)、なぜ私はそのような質問をするのですか? 私は、「ファイル間のコンパイルの依存関係を最小限に抑える」ことの意味を理解しようとしています.Meyersの本から50の特定の方法について...(あなたがこの本について知っていることを願っています)、そこで彼はそれが何を意味するのかを説明しています抽象基本クラスとハンドルクラス、私の講師が私に説明したように、余分な .h ファイルを含める必要はありません。それだけです。コンパイルプロセスに関するリンクも歓迎します。事前に助けてくれてありがとう
3 に答える
完全なコンパイルを実行すると、コンパイラは各 .cpp ファイルを順番に読み取ります。指定された .cpp ファイルについて、#include
ディレクティブによって参照されるすべてのファイルを再帰的に読み取り、コードをコンパイルします。次のソース ファイルをコンパイルすると#include
、そのソース ファイルで参照されているファイルが読み込まれます。
変更を加えてビルドを実行すると、 .cpp ファイルの#include
ディレクティブによって参照されるファイルのいずれかが変更された場合、.cpp ファイル自体が変更されたかのように、.cpp ファイルが再コンパイルされます。
したがって、不要な#include
ディレクティブには 2 つの代償があります。1 つ目は、コンパイル時にコンパイラがより多くのファイルを読み取って処理する必要があることです。2 つ目は、実際に使用するものが何も変更されていない場合でも、.cpp ファイルを再コンパイルする必要が生じる可能性が高くなります。
見る
http://computer.howstuffworks.com/c2.htm の概要と
詳細な説明についてはhttp://www.tenouk.com/ModuleW.html
さらに、いくつかの理論的背景は http://en.wikipedia.org/wiki/Compilerにあります。
コンパイラがどのように機能するかを理解する最善の方法は、まずアセンブラがどのように機能するかを理解することです。ここにまともな説明があります。