6

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

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

如以下评论所述,此问题仅发生在

#include <iostream>   

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

4 回答 4

8
#include <ostream>

应该修复它。在 C++11 下,#include <iostream>应该拉入所有的<ostream>,但在 C++11 之前,你必须做单独#include的 s.

于 2012-11-20T13:10:39.923 回答
3

它应该是:

主函数()

  • 你错过了 () :)
于 2014-10-16T03:15:17.737 回答
1

验证您的包含是否都关闭了它们的命名空间——如果先前的标头没有关闭其命名空间,您的包含可能会意外地在命名空间中声明。

您还可以尝试通过将 std 包含移到包含列表中的更早位置来定位此问题。

于 2012-11-20T10:38:34.980 回答
0

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

PS。请记住,不包括流式传输类型的东西是有充分理由的。

于 2019-06-25T17:07:59.050 回答