近十年后,我回到了 C++ 世界。我已经安装了 GCC 并在我的 Windows 7 机器上编写了一个初步程序。我有以下问题:
当我说 时#include <iostream.h>
,我收到一条错误消息,提示找不到文件。我不得不说#include <iostream>
让它工作。此外,当我转到安装 GCC 的文件夹时,我找不到任何名称的听者文件。iostream 是从哪里挑选出来的?
<iostream>
是您需要包含的标准 C++ 标头。它在哪里取决于您的平台。在我的,它在
/usr/include/c++/4.4.3/iostream
您可以通过以下方式了解g++
配置的详细信息
g++ --详细
这会打印出,除其他外,
--with-gxx-include-dir=/usr/include/c++/4.4
标.h
头(例如iostream.h
)已被弃用,取而代之的是“现代”风格的标头(iostream
)。这确保了实现不需要将标头作为物理位于磁盘上的文件提供。可以自由选择任何适当的实现。
例如,<math.h>
要求实现提供具有此名称的文件,但如果您只指定<cmath>
,则实现可以随意提供数学实用程序,而不需要物理文件。
此外,.h
标头将其声明放在全局名称空间中,而“非.h”标头将其声明放在std
名称空间中。因此,新标头不太可能导致任何命名冲突。
编辑正如Basile Starynkevitch在评论中指出的那样,这个概念不仅限于 C++,而且 C 标准也支持它。
C++中没有iostream.h
标题,这些都是在标准之前的日子里。没有 C++ 标准库头文件以.h
.
如果您的编译器安装是健全的,那么您永远不必将包含标准库头文件的目录添加到您的包含目录中——编译器已经知道最好的位置。
在我的 Windows 盒子上,iostream
(现在没有.h
)位于:\cygwin\lib\gcc\i686-pc-cygwin\4.5.3\include
. (由于 Eclipse 错误,我正在搜索它并搜索了 Google 和我的 HD。)
实际上你可以在 GCC 的源代码中找到它:
libstdc++-v3/include/std/iostream
Without .h
extension
Example forGCC-4.7