近十年后我又回到了C ++世界。我已经安装了GCC并在我的Windows 7盒子上写了一个初步程序。我有以下问题:
当我说#include <iostream.h>
时,我收到错误消息,说找不到文件。我必须说#include <iostream>
才能让它发挥作用。此外,当我转到安装GCC的文件夹时,我找不到任何一个名称的助手文件。 iostream从哪里被挑选?
答案 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
关键字)