我正在使用两个编译器g ++和Dev - C ++。当我在Dev-C ++上编译我的程序时,它编译得很完美。但是当我尝试在g ++上编译它时,它给了我两个错误:
In file included from a2test.cpp:27: ----.h:25: error: 'ostream' has not been declared ----.h:26: error: 'istream' has not been declared
有人能告诉我怎样才能解决这个问题。
由于
答案 0 :(得分:4)
确保包含fstream。另外,在ostream之前放置“std ::”或在某处放置“using namespace std”。
如果您发布代码会有所帮助,因为现在我只是根据常见错误进行猜测。
我猜你忘了包含fstream,因为不同的编译器可能会使用不同的头文件,而g ++可能会有一个头文件
// iostream
#include <fstream>
虽然Dev-C ++可能有
// iostream
// no include for fstream in this file
因此,您不小心导入了正确的头文件,而不是明确地执行此操作。
对于头文件,我只是在忘记哪一个时使用这个网站。
似乎你需要包含ostream以获得ostream。对于istream来说可能是同样的事情。
答案 1 :(得分:2)
我的通灵调试技巧表明问题可能意味着你对g ++和g ++ Dev-CPP的使用是不同版本的gcc。 Dev-CPP中包含的(可能是更早的)版本中的一个标题可能是#include
它不需要的标准C ++标头,这将允许不严格的标头正确编译。
确保您确实#include
d <iostream>
,<istream>
和<ostream>
或<iosfwd>
- 实际包含这些类型的标题你。
( Side Note :请不要使用Dev-CPP - 项目已经死了,编辑器犯了很多罪。再加上它不是一个好的编辑器。如何使用Code :: Blocks或Visual Studio(两者都是免费的)?)
答案 2 :(得分:0)
不知道这是否有帮助,但首先,你应该记得省略其他一些编译器(MS-C ++)使用的“.h”,而不是ANSI / G ++。所以它应该只是
#include <iostream>
其次,不要忘记:
using namespace std;
第三,它已经很长时间了,但是如果我没记错的话,在g ++中,th istream和ostream函数都在“std”库中。所以你可以这样做:
using std::istream;
//later
istream::iostate state = ...
或者,你可以像这样直接使用它们:
std::istream::iostate state = ...
希望这会给你一些想法。