【问题标题】:Eclipse debugger C++ 'No source available for "std::ostream::operator<<()"'; 'std::endl' issueEclipse 调试器 C++ '没有可用于“std::ostream::operator<<()”的源'; 'std::endl' 问题
【发布时间】:2017-05-31 09:38:39
【问题描述】:

我正在调试我构建的程序。该程序编译并运行没有错误。

使用调试器 gcc4.9.3 (rtools_34) 时,我收到一条消息:

'没有可用于“std::ostream::operator

当跨过任何包含 std::cout

代码包括:iostream、ostream和string。

此代码也已使用其他编译器进行调试,但未出现此问题。这是一个新的 Eclipse 编译器的新导入,所以我假设我设置错误。

问题似乎出在 std::endl 上,因为使用 '\n' 代替了工作。

非常感谢任何有关错误消息解释或如何解决问题的提示。

【问题讨论】:

  • 如果将"Text" 替换为std::string 会发生什么?似乎编译器无法将文字转换为&lt;&lt;-able 的类型。用 std::string 的显式实例替换文字可能会给您另一个线索。
  • 你的意思是包括:std::string test = "Text"; std::cout
  • 我也遇到了同样的问题。你设法解决了吗?见stackoverflow.com/questions/43020983/…
  • 目前没有解决方案。我正在使用断点来绕过问题。如果您找到解决方案,请告诉我。我目前正在做其他事情,但如果我找到解决方案会更新。

标签: c++ eclipse gdb


【解决方案1】:

你还记得吗? #include &lt;string&gt;?

很抱歉,如果这很明显并且已经过检查,只是不清楚您的问题是否确实如此!

【讨论】:

  • 弗雷德没问题。是的,代码确实包含 #include
  • 另一件需要检查的小事(不太可能修复,但可能会再次缩小范围)可能是明确使用 \n - 如 std::cout
  • 我能想到的最后一件事是您的编译器的调试标志尚未设置。我意识到我的所有三个建议都很简单,我希望您在来这里之前已经检查过了,但我希望它们不会造成任何伤害,以防万一?希望其他人会来解决这个问题,假设不是这些!
  • 我确实设置了调试标志,是的,应该说。我尝试过使用“-g”和“-g3”。但是,当 std::endl 不使用时,使用 std::cout
  • 在这种情况下,我恐怕无法从那里想到或找到任何解决方法!我希望您更新的问题能带来其他可能能够想到进一步修复的人。希望在那之前&lt;&lt; "\n"(或者&lt;&lt; "\n" &lt;&lt; std::flush)替代方案可以成为一种解决方法!
猜你喜欢
  • 2023-03-21
  • 2015-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-28
  • 2011-02-06
相关资源
最近更新 更多