首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Eclipse:编译,但CODAN (内部代码分析器)为C++ 11 <includes>中的函数提供错误

Eclipse:编译,但CODAN (内部代码分析器)为C++ 11 <includes>中的函数提供错误
EN

Stack Overflow用户
提问于 2014-03-20 10:07:29
回答 3查看 2.2K关注 0票数 2

我在eclipse中有以下代码:我运行的是Indigo SR2,64位,带有CDT版本: 8.0.2.201202111925 Build id:@build@我有Java SDK、Android SDK和C++ CDT。我相信只有Eclipse11函数才会出现这个问题:看起来c++的内部代码分析器CODAN没有正确地找到这些库,即使编译器找到了(我的编译器上有std=C++11标志)。

我认为这个话题是相关的:http://www.eclipse.org/forums/index.php/t/490066/

代码语言:javascript
复制
#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;

    }

我收到一个错误/没有编译,因为我被告知:

代码语言:javascript
复制
Symbol 'array' could not be resolved

为什么我没有编译?我正在使用eclipse indigo和CDT和cygwin。如有必要,我可以提供更多信息。

更新:我使用Cygwin、GCC和Cygwin PE解析器通过eclipse (锤子按钮或右键单击项目并单击build)进行编译。

更新2:在indigo中运行会给出编辑器错误和编译失败,而开普勒会给出错误,但似乎可以成功运行和编译。有没有办法让这个错误在开普勒中消失呢?另外,如何从eclipse中获取传递给编译器的实际命令?

更新3:更奇怪的是,在开普勒编译后,它现在也可以用indigo编译,尽管在两个版本的文本编辑器中都存在错误。

1)有没有一种方法可以使这些错误对编译更准确?

2)我可以在include上按f3并查看其源代码,那么为什么eclipse似乎找不到数组符号呢?

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

更新4:我尝试了std::tr1::array<int, 3> arr1 = {1, 2, 3};,但它仍然告诉我数组无法解析。我已经将-std=c++11添加到我的c/C++构建->设置-> Cygwin C++编译器->杂项->其他标志中。它现在显示为:-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“的链接,它并没有改变任何东西……

谢谢!

EN

回答 3

Stack Overflow用户

发布于 2014-03-21 01:03:36

我想我通过更改以下设置就解决了这个问题:项目->属性->C/C++通用/预处理器包含路径,宏等。->提供程序(选项卡)

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

它刷新了一下,然后红色的小曲线消失了。

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

我也尝试过这样做:http://scrupulousabstractions.tumblr.com/post/36441490955/eclipse-mingw-builds,但它并不能准确地工作。可能是因为我在用Ubuntu。

票数 1
EN

Stack Overflow用户

发布于 2019-10-26 08:41:09

我已经在Workspace Settings > C/C++ > Build > Settings > Discovery (选项卡)> CDT -std=c++11 Built-in Compiler Settings(工作空间设置>C/C++>构建>设置>发现(选项卡)>CDT to in-in compiler Settings)中的“获取编译器规格的命令”的末尾添加了"-std=c++11“。

我已经在Properties > C/C++ General下设置了我的项目,所以禁用了"Enable project specific settings“。

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

我刚刚发现,取消选中“启用特定于项目的设置”并不能保证项目将使用工作区中的Discovery设置。你仍然需要在你的项目中进入属性> C/C++常规>预处理器包含路径,宏等>提供者(选项卡)> CDT GCC内置编译器设置...并确保选中了"Use global provider shared between“选项(在我的系统上,运行Eclipse IDE for C/C++ version 2019-09R时,该选项不是缺省的)。选中此选项后,"CDT GCC内置编译器设置“将在其旁边显示共享。

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

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

票数 0
EN

Stack Overflow用户

发布于 2022-03-02 09:03:58

C/C++构建->设置->工具设置->交叉G++编译器->方言->语言标准->选择要使用的语言。

你不需要在其他地方添加"-std=c++11“

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22522048

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档