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停止抱怨这类错误?
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停止抱怨这类错误?
当使用交叉编译器时,我经常得到同事精心制作的高级定制构建系统。我使用“具有现有代码的Makefile项目”,因此大多数其他答案不适用。
在项目开始时,我必须在“具有现有代码的Makefile项目”向导中指定我正在使用交叉编译器。让人烦恼的是,在过去的10年左右中,该向导上的交叉编译器按钮不会提示交叉编译器的位置。因此,在修复C++问题和交叉编译器问题的步骤中,我必须像@ravwojdyla等回答中提到的那样转到提供程序选项卡,但我必须选择的提供程序是交叉编译器提供程序。然后,在命令框中放置编译器的完整路径,并添加-std = gnu++11以获取我希望支持的C ++标准。这效果不错。
您可以将其应用于现有项目。您可能需要重新运行索引器。
我从未不得不添加实验标志或覆盖__cplusplus的定义。唯一的问题是,如果我有大量现代C代码,则无处放置特定于C的标准选项。
当事情变得非常糟糕时,获取解析器日志并在索引器子菜单中使用该命令可以提供非常有用的信息。
要在Eclipse Luna中获得对C++14的支持,您可以执行以下步骤:
C++ General -> Preprocessor Include -> Providers -> CDT Cross GCC Built-in Compiler Settings
中添加“-std=c++14”C++ Build -> Settings -> Cross G++ Compiler -> Miscellaneous
中添加“-std=c++14”重新索引您的项目并最终重新启动Eclipse。它应该按预期工作。
Indigo 对于这个黑客版和清理版都不起作用。黑客版被忽略了,所需的配置选项也不见了。出乎意料的是,在之前并没有工作并且没有提供任何有用的原因后,构建开始工作了。至少从命令行上,我能获得可重复的结果。
我认为你也可以进入Eclipse -> 属性 -> C/C++ -> 核心构建工具链并使用不同的路径进行编辑,但我不确定那会做什么。
我在使用Eclipse C++ 2019-03处理混合C和C ++项目时遇到类似问题,该项目使用了std :: optional
和std :: swap
。 对我有效的方法是这样的。
在项目中,
属性-> C / C ++构建->设置->工具设置->交叉G ++编译器
中,从Miscellaneous
中删除-std = gnu ++ 17
,并将其放入Dialect-> Other Dialect Flags
中。
std::unique_ptr<char[]>
。 - Cubbiunique_ptr<char>
不会调用delete
,因为它是通过new[]
创建的,这是错误的吗? - Dietrich Eppdelete
,但你需要调用delete[]
。unique_ptr<char>
假设它得到的是一个指针,会使用delete
进行删除。而unique_ptr<char[]>
则期望一个数组,并使用delete[]
正确地进行删除。 - Nicol Bolas