命名空间'std'中的'ostream'未命名类型

时间:2012-11-20 10:33:30

标签: c++ linux gcc g++

正如标题所示,我遇到了一个相当奇怪的问题。当我尝试编译一个示例源代码(使用libotb)时,我不断收到标题中的错误。奇怪的是,在报告错误的所述源/头中存在#include <iostream>

另一方面,如果我从所述文件中提取代码并创建一个单独的源并使用g++ <source_file>进行编译它可以正常工作,但如果我使用g++ -I<path_to_libotb_headers> <source_file>进行编译,我会得到相同的错误,尽管源文件不包含所述路径中的任何内容。

如下面的评论中所述,只需

即可解决此问题
#include <iostream>   

int main                                                                                
{
    std::cerr << "Test";
    return 0;
}

4 个答案:

答案 0 :(得分:5)

#include <ostream>

应该修复它。在C ++ 11下,#include <iostream>应该引入所有<ostream>,但在C ++ 11之前,您必须执行单独的#include

答案 1 :(得分:3)

应该是:

int main()

  • 你错过了():)

答案 2 :(得分:1)

验证您是否包含所有已关​​闭的命名空间 - 如果前一个标头未关闭其命名空间,则可能会在命名空间中意外声明您的include。

您还可以通过移动包含列表中较早的std包来尝试找到此问题。

答案 3 :(得分:0)

如果您是Arduino程序员,请不要忘记Arduino没有任何东西 常规的“ ostream”内容内置。
但是有些库提供了类似的功能。

PS。请记住,有充分的理由不包含流式内容。