8

近十年后,我回到了 C++ 世界。我已经安装了 GCC 并在我的 Windows 7 机器上编写了一个初步程序。我有以下问题:

当我说 时#include <iostream.h>,我收到一条错误消息,提示找不到文件。我不得不说#include <iostream>让它工作。此外,当我转到安装 GCC 的文件夹时,我找不到任何名称的听者文件。iostream 是从哪里挑选出来的?

4

6 回答 6

7

<iostream>是您需要包含的标准 C++ 标头。它在哪里取决于您的平台。在我的,它在

/usr/include/c++/4.4.3/iostream

您可以通过以下方式了解g++配置的详细信息

g++ --详细

这会打印出,除其他外,

--with-gxx-include-dir=/usr/include/c++/4.4

于 2012-12-11T12:21:41.343 回答
5

.h头(例如iostream.h)已被弃用,取而代之的是“现代”风格的标头(iostream)。这确保了实现不需要将标头作为物理位于磁盘上的文件提供。可以自由选择任何适当的实现。

例如,<math.h>要求实现提供具有此名称的文件,但如果您只指定<cmath>,则实现可以随意提供数学实用程序,而不需要物理文件。

此外,.h标头将其声明放在全局名称空间中,而“非.h”标头将其声明放在std名称空间中。因此,新标头不太可能导致任何命名冲突。

编辑正如Basile Starynkevitch在评论中指出的那样,这个概念不仅限于 C++,而且 C 标准也支持它。

于 2012-12-11T12:22:50.667 回答
3

C++中没有iostream.h标题,这些都是在标准之前的日子里。没有 C++ 标准库头文件以.h.

如果您的编译器安装是健全的,那么您永远不必将包含标准库头文件的目录添加到您的包含目录中——编译器已经知道最好的位置。

于 2012-12-11T12:21:18.270 回答
2

在我的 Windows 盒子上,iostream(现在没有.h)位于:\cygwin\lib\gcc\i686-pc-cygwin\4.5.3\include. (由于 Eclipse 错误,我正在搜索它并搜索了 Google 和我的 HD。)

于 2015-03-21T12:49:19.493 回答
1

实际上你可以在 GCC 的源代码中找到它:
libstdc++-v3/include/std/iostream
Without .h extension
Example forGCC-4.7

于 2012-12-11T12:21:58.143 回答
1

使用 GCC 的-H 预处理器选项让它显示每个包含的标题。

正如其他人告诉你的那样,标准 C++ 头文件不再以.hor结尾.hh

(我的建议是.hh用于您自己的 C++ 头文件和.ccC++ 源文件;我还建议使用 GCC 4.7 并针对C++2011标准进行编码,特别是使用auto初始化本地的“类型推断”关键字变量)

于 2012-12-11T12:23:49.513 回答