的使用我正在研究一个旧的项目,该项目仍有不合适的“#include iostream.h”包含。我知道iostream.h已被弃用,不应该被使用,但是这些代码必须运行/编译的一些系统是运行CC的老式solaris机器,并且没有iostream可用。我的问题是:如何让我的更现代的g ++编译器接受iostream.h包含。#include <iostream.h>
编辑:编译器找不到iostream.h文件,所以我假设没有任何.h版本的库可用于g ++。
的使用我正在研究一个旧的项目,该项目仍有不合适的“#include iostream.h”包含。我知道iostream.h已被弃用,不应该被使用,但是这些代码必须运行/编译的一些系统是运行CC的老式solaris机器,并且没有iostream可用。我的问题是:如何让我的更现代的g ++编译器接受iostream.h包含。#include <iostream.h>
编辑:编译器找不到iostream.h文件,所以我假设没有任何.h版本的库可用于g ++。
我会退后一步,写你到处使用,而不是,它像其他中间头:
#if defined(sun) || defined(__sun)
# if defined(__SVR4) || defined(__svr4__)
/* Solaris */
#include <iostream>
# else
/* SunOS */
#include "iostream.h"
# endif
#else
/* Sane, modern system */
#include <iostream>
#endif
这也是我的想法,即时通讯只是不知道如何处理命名空间问题,因为旧的SunOS不理解命名空间。修改该中间体以在定义iostream的地方包含“using namespace std”? –
评论中的“理智”为+1。 – Griwes
-1这是一个不错的答案,因为C和C++的系统检测与网页的浏览器检测一样**非常差。除非你从事平台自适应业务,比如boost。 –
最简单的解决方案可能是创建一个名为iostream.h
的本地头文件,它只包含<iostream>
并导入命名空间std
。然后,为了使编译器允许#include <iostream.h>
将本地路径添加到包含文件搜索路径。对于G ++,这个工程:
g++ -I local_folder [other flags] …
顺便说一句,你的话大约
...不推荐使用 “的#include iostream.h”
是不太正确的:这是不是由于它从来没有合法的C++而被弃用。
但'
您可能希望它执行'#include
@Matt我不确定,所以我故意模糊地回答我的回答。只需添加'using namespace std;'然后。 –
是-std = C++ 98标志的选项? –
@安迪是否有效? 'iostream.h'从来不在C++ 98标准中。 –
@KonradRudolph:不知道,我不熟悉这些旧标题,我只是认为旧标准可能已经支持它们并提供了一个提示。这很可能是错误的 –