【问题标题】:iostream.h, fstream.h cannot be foundiostream.h、fstream.h 找不到
【发布时间】:2012-11-11 19:46:11
【问题描述】:

我有一台 32 位机器,我在上面运行 Ubuntu 9.10。我有最新的 gcc 编译器。我面临的问题是我有一个 2002 年开发的库。代码肯定是正确的,但是当我尝试构建它时,它给了我诸如 iostream.h 找不到之类的错误,错误:fstream.h:没有这样文件或目录等。有很多文件,因此我无法更改它们。

如果解决了这些错误我安装 gcc 3.0 可以解决吗?如果是,如何在我现有的 gcc 编译器上安装它。

【问题讨论】:

标签: gcc


【解决方案1】:

您正在处理一个预标准 C++ 库,并且您已经看到它无法使用标准编译器进行编译。您总是可以通过使用#include <iostream>using namespace std; 两行创建例如iostream.h 来尝试快速解决方法,这可能会奏效。它不可靠,并且可能会导致在不方便的时候出现的难以发现的错误。

如果这是来自其他地方的库,您可以查看它是否已更新。

要意识到代码不再正确。在某些时候它可能对某些实现是正确的,但现在不是。 (你确定它最初是为 gcc 3.0 设计的吗?标准前的编译器,嗯,不是标准的,而且有很多奇怪之处。避免这是标准的目的。)如果你安装了原始系统,你可能无法与库正确交互,新代码将无法正常工作。不与现代代码交互的库的用途有限。

否则,您将不得不放弃无法更改库的态度,并将其转换为标准 C++。可能会有很多相当容易修复的错误(如for (int i = 0;...) 中的范围),并且可能是一些更微妙的问题。对于某个编译器,该代码可能是正确的,但现在不是。

【讨论】:

    【解决方案2】:

    fstream.h 和类似文件是现代编译器随附的 C++ 标准指定的 fstream 和类似文件的预标准版本。两者通常不兼容。坦率地说,如果在过去 8 年中没有人更新该库以符合标准,那么它不太可能值得使用。

    【讨论】:

    • 好点!谁能说即使更新包含其他问题还会存在。
    • @John Weldon:根据我的经验,可能存在一些令人讨厌且难以解决的问题。
    【解决方案3】:

    为什么你不能写一个脚本来搜索和替换所有的实例

    #include <iostream.h>
    

    #include <iostream>
    

    其他人也一样?

    更新: 我同意另一个答案,以及下面的 cmets... 不过我会留下这个答案,因为我不认为这个说法

    有很多文件,所以我不能 改变他们

    有效:)

    【讨论】:

    • 因为它不会更新使用标头的代码。预标准库和标准化库通常存在许多不兼容问题。
    • @John - 我想我在 2003 年左右尝试过一次,使用了一些 1992 年的 C++ 代码。事实证明,它还不止于此。班级不一样。一旦编译完成,它就会在运行时挂起,这可能与以不同方式传达的流结束条件有关。无论如何,我放弃了努力。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-13
    • 2010-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    相关资源
    最近更新 更多