私はC++が初めてで、ヘッダーを見つける方法を理解しようとしています。もともと、ソースコードに含めることができるクラスを見つけようとしていただけでした。異なるコンパイラは異なるインクルード ディレクトリを使用するため、クラスの可用性は異なると思います。私の計画は、コンパイラが使用していた「include」ディレクトリを見つけて、そこに何でも含めることができると仮定することでした。だから私は行くにつれてますます混乱しています。
まず、Windows 7 の Code::Blocks で C++ コードを書いています。IDE はコンパイルに GNU GCC を使用するように設定されています。これは、C++ コードに G++ コンパイラを使用することを意味します。ここでコンパイラを見つけました: C:\MinGW\bin\mingw32-g++.exe, Code::Blocks 設定はそれを指しています。
したがって、G++ は C:\MinGW\include を再帰的に使用してすべてのヘッダーを検索する必要があると想定しました。私の理論をテストするために、「iostream.h」を検索しました。驚いたことに、私の C ドライブには「iostream.h」すらありません。それにもかかわらず、それを含めると、私のコードはコンパイルされて機能します。
だから私の質問:
ハードドライブにない場合でも、G++ はどのようにして iostream ヘッダーを見つけるのですか?
すべての標準 C++ ヘッダー ( http://msdn.microsoft.com/en-us/library/ct1as7hw.aspxに記載) は、すべての C++ コンパイラで使用できますか? ソースコードを変更する必要がないように、まったく同じ名前を使用しますか?