【问题标题】:unique_ptr autocomplete in eclipseeclipse中的unique_ptr自动完成
【发布时间】:2012-04-03 17:56:21
【问题描述】:

我正在玩 unique_ptr。在我的last post 中,人们通过在编译期间指定 -std=c++0x 帮助我编译了一个使用该指针的程序。 现在我想知道是否有任何方法可以指示 eclipse 在自动完成时考虑 c++11?
unique_ptr 不在 std:: 命名空间列表中,我也找不到与 unique_ptr 关联的方法(重置、移动...)。

谢谢 虚无

【问题讨论】:

  • 我知道有人知道所有 30 个步骤才能做到这一点,但我会切换到 kdevelop 并启用自动完成功能;)
  • this bug 上最后一条评论中的建议有帮助吗?我不使用 Eclipse,所以无法尝试。
  • @Als 不,它没有用,但是 tanx。仅供参考,我打开了项目属性->C/C++ 构建->发现选项->GCC C++ 编译器:在编译器调用参数中我添加了 -std=c++0x 但没有任何效果。
  • @VJovic 不能那样做。至少现在不会。
  • @AlokSave 提供的解决方案对我有用!

标签: c++ linux eclipse stl unique-ptr


【解决方案1】:

“memory”标头(可能位于 /usr/include/c++/4.9/memory)仅包括“unique_ptr.h”和“shared_ptr.h”(可能位于 /usr/include/c++/4.9/bits /unique_ptr.h 和 /usr/include/c++/4.9/bits/shared_ptr.h) 如果宏“__cplusplus”等于或大于“201103L”。自己检查 memory.h 以在第 69 行查看“#if”预处理器条件(或搜索字符串“#if __cplusplus >= 201103L”)。

正如其他人提到的,使用“-std=c++0x”或更高版本的 c++ 标准(-std=c++11 或 -std=c++14)进行编译可以解决编译错误,但不能解决 eclipse 索引和自动完成问题。

为了解决 eclipse 索引问题,我在项目构建属性中添加了“__cplusplus”预处理器宏,值为“201103L”,然后我刷新了索引;

添加预处理器宏:

“在项目资源管理器上右键单击项目”>>属性>>C/C++常规>>预处理器包括>>条目>>GNU C++>>CDT用户设置条目>>添加...>>预处理器宏;

然后输入一个名为“__cplusplus”、值为“201103L”的宏;

然后,要刷新索引,请执行以下操作:

“在项目资源管理器上右键单击项目”>>索引>>重建;

Ps.:我在 ubuntu 15.04 64bits 上使用 gcc 4.9.2 和 eclipse Luna (4.4.2)

【讨论】:

    【解决方案2】:

    我猜你应该将__GXX_EXPERIMENTAL_CXX0X__ 定义添加到Eclipse 中的“路径和符号”中。另请参阅此问题 GNU C++ how to check when -std=c++0x is in effect? 和相同的问题 Eclipse indexer can't resolve shared_ptr shared_ptr

    【讨论】:

    • 做不到。有经验的人可以试试这个吗?
    • @rahman,查看same questionshared_ptr,OP 报告说它有效。
    • 我在 Eclipse Juno 上,虽然设置该符号确实可以识别 std::unique_ptr,但索引器会标记任何使用带有 unique_ptr 的 std::move 的“无效参数”错误。跨度>
    • @Hans:在 Juno 中有一种新方法。您应该在发现选项中添加-std=c++0x。详细说明见这些链接:CDT does not recognize C++11 features, eclipse forum
    • 没有骰子,将标志添加到发现选项或源导航都不会阻止可编译代码被标记为有错误。
    猜你喜欢
    • 2011-07-20
    • 1970-01-01
    • 1970-01-01
    • 2010-10-30
    • 2015-02-16
    • 2011-02-12
    • 1970-01-01
    • 2017-12-18
    • 2015-11-24
    相关资源
    最近更新 更多