如何在 Eclipse CDT 中启用 C 11/C 0x 支持?

新手上路,请多包涵

Eclipse 3.7.1 CDT 1.4.1 GCC 4.6.2

这是一段 C++11 代码的示例:

 auto text = std::unique_ptr<char[]>(new char[len]);

Eclipse 编辑器抱怨:

 Function 'unique_ptr' could not be resolved

Makefile 编译工作正常。如何让 Eclipse 停止抱怨这些错误?

原文由 Nick 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 779
2 个回答

我在 Eclipse 论坛中找到 了这篇 文章,只是按照这些步骤操作,它对我有用。我在带有 Cygwin 设置的 Windows 上使用 Eclipse Indigo 20110615-0604。

  • 创建一个新的 C++ 项目
  • 一切的默认选项
  • 创建后,右键单击项目并转到“属性”
  • C/C++ 构建 -> 设置 -> 工具设置 -> GCC C++ 编译器 -> 杂项 -> 其他标志。将 -std=c++0x (或更新的编译器版本 -std=c++11 放在最后……而不是 GCC C++ 编译器我也有 Cygwin 编译器
  • C/C++ 常规 -> 路径和符号 -> 符号 -> GNU C++。单击“添加…”并将 __GXX_EXPERIMENTAL_CXX0X__ (确保附加两个下划线)粘贴到“名称”中并将“值”留空。
  • 点击应用,做它要求你做的任何事情,然后点击确定。

现在在 Eclipse FAQ 中也有对此的描述: Eclipse FAQ/C++11 Features

日食设置

Eclipse 图像设置

原文由 Carsten Greiner 发布,翻译遵循 CC BY-SA 4.0 许可协议

使用交叉编译器时,我经常得到同事精心打造的高级定制构建系统。我使用“Makefile Project with Existing code”,所以大多数其他答案都不适用。

在项目开始时,我必须在向导中为“使用现有代码的 Makefile 项目”指定我正在使用交叉编译器。令人讨厌的是,在过去 10 年左右的时间里,该向导上的交叉编译器按钮并没有提示交叉编译器在哪里。因此,在修复 C++ 问题和交叉编译器问题的步骤中,我必须转到上面 @ravwojdyla 等答案中提到的提供程序选项卡,但我必须选择的提供程序是交叉编译器提供程序。然后在命令框中输入编译器的完整路径,并为我想要支持的 C++ 标准添加 -std=gnu++11。这和预期的一样有效。

您可以对现有项目执行此操作。您可能需要做的唯一一件事就是重新运行索引器。

我从来不需要添加实验标志或覆盖 __cplusplus 的定义。唯一的问题是,如果我有大量现代 C 代码,我无处可放 C 特定的标准选项。

当事情进展得非常糟糕时,在 Indexer 子菜单中使用该命令获取解析器日志可能会提供非常丰富的信息。

原文由 cardiff space man 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题