Eclipse:进行编译,但是CODAN(内部代码分析器)为C ++ 11中的函数给出了错误。

问题描述 投票:2回答:2

我在Eclipse中有以下代码:我正在运行CDT版本的Indigo SR 2,64位,版本:8.0.2.201202111925生成ID:@ build @我有Java SDK,Android SDK和C ++ CDT。我相信问题仅发生在c ++ 11函数上:即使编译器在Eclipse的内部代码分析器CODAN似乎也无法正确找到这些库(我在编译器上具有std = C ++ 11标志)。

我认为该主题与http://www.eclipse.org/forums/index.php/t/490066/相关

#include <iostream>
#include <array>
using namespace std;

    int main(){
    cout << "test";

          array<int,5> myints;
          int x = 0;
          cout << "size of myints: " << myints.size() << std::endl;
          cout << "sizeof(myints): " << sizeof(myints) << std::endl;

          return 0;

    }

并且我被告知错误//未编译,因为有人告诉我:

Symbol 'array' could not be resolved

我为什么不编译?我正在CDT和cygwin中使用eclipse靛蓝。我可以根据需要提供更多信息。

更新:我使用Cygwin GCC和Cygwin PE解析器通过eclipse(锤键或右键单击项目,然后单击生成)进行编译。

更新2:在indigo中运行会同时导致编辑器错误和编译失败,开普勒给了我这个错误,但似乎可以成功运行和编译。有没有办法使开普勒错误消失?另外,我如何将实际的命令从eclipse中传递给编译器?

更新3:更怪异的是,在开普勒中进行编译后,它现在也可以在靛蓝中进行编译,尽管在两个版本的文本编辑器中仍然存在错误。

1)有什么方法可以使这些错误更准确地进行编译?

2)我可以按include上的f3并查看其来源,那么为什么蚀似乎无法找到数组符号?

3)我还被告知第一个std::endlInvalid overload of 'std::endl'

更新4:我尝试了std::tr1::array<int, 3> arr1 = {1, 2, 3};,但它仍然告诉我无法解析数组。我已经在我的c / C ++ Build-> Settings-> Cygwin C ++ Compiler-> Miscellaneous-> Other标志中添加了-std=c++11。现在显示为:-c -fmessage-length=0 -std=c++11但我现在看不到任何变化

更新:这个问题似乎正在解决这个问题:Eclipse C/C++ Shows Errors but Compiles?但是,我已经添加了指向目录“ D:/Wamp/cygwin64/lib/gcc/x86_64-pc-cygwin/4.8.2/include”的链接,它没有任何改变...

谢谢!

c++ eclipse symbols
2个回答
1
投票

我想我可以通过更改以下设置来解决此问题:项目->属性-> C / C ++常规/预处理器包含路径,宏等->提供程序(选项卡)

然后是“ CDT GCC内置编译器设置”->单击链接“工作区设置”再次在“获取编译器规格的命令:”下的“ CDT GCC内置编译器设置”。添加:"-std=c++11"

花了一会儿,然后红色的小花形消失了。

这是来源:http://www.eclipse.org/forums/index.php/mv/msg/373462/909018/#msg_909018

我也尝试过以下操作:http://scrupulousabstractions.tumblr.com/post/36441490955/eclipse-mingw-builds但这并不完全有效。可能是因为我在Ubuntu上。


0
投票

我在工作区设置> C / C ++>生成>设置>发现(选项卡)> CDT GCC内置编译器设置中的“获取编译器规范的命令”的末尾添加了“ -std = c ++ 11” “ ...

并且我已经设置了项目,因此在“属性”>“ C / C ++常规”下禁用了“启用项目特定设置”。

但是我仍然遇到了C ++ 11相关的CODAN错误。

我刚刚发现,取消选中“启用项目特定设置”并不能保证该项目将使用工作空间中的“发现”设置。您仍然必须在项目中转到“属性”>“ C / C ++常规”>“预处理器包含路径,宏等”。>“提供程序”(选项卡)>“ CDT GCC内置编译器设置...”,并确保“使用共享的全局提供程序”选项“项目”已选中(在我的系统上,默认情况下,运行Eclipse IDE for C / C ++版本2019-09 R时,它不是默认状态)。选中此选项,“ CDT GCC内置编译器设置”现在在其旁边显示[共享]。

[还有一些其他发现提供程序,您需要在其中设置类似的选项,以确保[共享]显示在列表中(如果您尝试应用工作空间设置)。我留下的“ CDT用户设置条目”是特定于项目的,但我共享的其他条目是为了使用工作空间级别的设置。

[CODAN现在可以正常工作了,我不再需要手动“刷新”索引和/或添加#include语句来微调CODAN。

© www.soinside.com 2019 - 2024. All rights reserved.