iostream.h在GCC中的位置

时间:2012-12-11 12:18:07

标签: c++ gcc

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

当我说#include <iostream.h>时,我收到错误消息,说找不到文件。我必须说#include <iostream>才能让它发挥作用。此外,当我转到安装GCC的文件夹时,我找不到任何一个名称的助手文件。 iostream从哪里被挑选?

6 个答案:

答案 0 :(得分:6)

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

  

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

您可以使用

找到g++配置的详细信息
  

g ++ --verbose

除其他外,打印出

  

- 与-GXX-包括-DIR =的/ usr /包括/ C ++ / 4.4

答案 1 :(得分:4)

{@ 1}}标题(例如.h)已被弃用,以支持“现代”样式标题(iostream.h)。这可确保实现不需要将标头提供为物理上位于磁盘上的文件。可以自由选择任何适当的实现。

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

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

编辑在评论中指出Basile Starynkevitch,这个概念并不仅限于C ++,但C标准也支持它。

答案 2 :(得分:3)

C ++中没有iostream.h标题,这些标题在标准前几天就已存在。没有C ++标准库标题以.h结尾。

如果您的编译器安装是理智的,那么您永远不必将包含标准库头的目录添加到include目录中 - 编译器已经知道最佳查看位置。

答案 3 :(得分:2)

在我的Windows框中,iostream(现在没有.h)位于:\cygwin\lib\gcc\i686-pc-cygwin\4.5.3\include。 (我是因为日食错误而搜索它并搜索了Google和我的HD。)

答案 4 :(得分:1)

实际上你可以在GCC的源代码中找到它:
libstdc++-v3/include/std/iostream
没有 .h扩展名 GCC-4.7

的示例

答案 5 :(得分:1)

使用GCC的-H preprocessor option让它显示每个包含的标题。

正如其他人告诉你的那样,标准C ++标题不再以.h.hh

结束

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