正如标题所示,我遇到了一个相当奇怪的问题。当我尝试编译一个示例源代码(使用libotb)时,我不断收到标题中的错误。奇怪的是,在报告错误的所述源/头中存在#include <iostream>
。
另一方面,如果我从所述文件中提取代码并创建一个单独的源并使用g++ <source_file>
进行编译它可以正常工作,但如果我使用g++ -I<path_to_libotb_headers> <source_file>
进行编译,我会得到相同的错误,尽管源文件不包含所述路径中的任何内容。
如下面的评论中所述,只需
即可解决此问题#include <iostream>
int main
{
std::cerr << "Test";
return 0;
}
答案 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。请记住,有充分的理由不包含流式内容。