我是 C++ 新手,并试图了解它是如何查找标头的。最初我只是想找出哪些类可供我包含在我的源代码中。我相信不同的编译器会使用不同的包含目录,因此类的可用性会有所不同。我的计划是找到编译器正在使用的“包含”目录,并假设我可以在其中包含任何内容。所以我只是在我去的时候变得更加困惑。
首先,我在 Windows 7 上的 Code::Blocks 中编写 C++ 代码。IDE 设置为使用 GNU GCC 进行编译,我了解到这意味着它使用 G++ 编译器来编译 C++ 代码。我在这里找到了我的编译器:C:\MinGW\bin\mingw32-g++.exe,Code::Blocks 设置指向那个。
所以我假设 G++ 必须递归地使用 C:\MinGW\include 来查找它的所有头文件。为了测试我的理论,我搜索了“iostream.h”。令我惊讶的是,我的 C 盘上什至没有“iostream.h”。尽管如此,当我包含它时,我的代码仍然可以编译和工作。
所以我的问题:
当我的硬盘驱动器甚至没有 iostream 标头时,G++ 如何找到它?
所有 C++ 编译器都可以使用所有标准 C++ 头文件(如下所列:http: //msdn.microsoft.com/en-us/library/ct1as7hw.aspx )吗?具有相同的确切名称,所以我不必更改我的源代码?