【问题标题】:Eclipse: Method std::thread.detach() could not be resolvedEclipse:方法 std::thread.detach() 无法解析
【发布时间】:2016-02-24 14:00:29
【问题描述】:

我正在使用NSight Eclipse Edition,即使项目编译正常,某些成员[此处为detach()] 也无法解决。

错误信息出现在 7.0 和 7.5 版本中。

更新:好的;我在包含 thread 中发现是在开头这个检查:

#if __cplusplus < 201103L
# include <bits/c++0x_warning.h>
#else

因为__cplusplusNsight 中定义如下:

因此,#if 被解析并且未找到成员 - 这些成员在 #else 部分中定义。

我无法在 Eclipse 中设置值,因为在 Preprocessor include Paths, Macros etc. 窗口中按钮被禁用并且显示了此注释:

知道如何更新__cplusplus 的值吗?

【问题讨论】:

  • 你试过在nsight eclipse版中设置c++11编译选项吗?如果这没有帮助,您可以在包含thread 之前尝试#undef __cplusplus#define __cplusplus=201103L。您可能希望在 nsight EE 编辑器解析时调整此行为,我怀疑为此定义了一个宏。
  • @RobertCrovella 1) c++11 已设置; 2) 我还在源代码中定义了我自己的__cplusplus 值。但这并不是一个很好的解决方案。然后我在 Eclipse 设置中找到了一种如何将值从 199711L 更改为 201103L 的方法——>这现在就像一个魅力。我写了关于这个 Nvidia 的家伙,并等待他们的回复。当他们确认我的方式时,我会用解决方案回答这个问题。

标签: cuda header-files nsight


【解决方案1】:

请在“C/C++ General”->“Paths And Symbols”窗格的“Symbols”选项卡中将_cplusplus设置为201103L,如下图所示:

【讨论】:

  • 是的,这是我的解决方案,因为我在这个问题的一条评论中写了 Robert Crovella。正如您在电子邮件中写给我的那样 - 这只是一种解决方法,直到 Nvidia 将在下一个版本中修复它。在 NSight 7.5 版中还有另一个问题。我不得不删除.metadata 目录并创建一个全新的项目。确实有很奇怪的行为。只需检查我的个人资料中可访问的其他问题。 PS:20114L 是个错误——不是吗?应该是201103L...
猜你喜欢
  • 2012-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-24
  • 2014-04-01
  • 1970-01-01
相关资源
最近更新 更多