所以我在eclipse中构建一些Arduino代码,如Your Second Arduino Project中所述,但每次我使用Arduino库,例如Serial
时,Eclipse都会强调我的函数名称,声称它们无法解析。但是,代码实际上是编译的,所以我有点不知道为什么Eclipse认为函数丢失了。如果有人知道如何解决这个问题,将不胜感激。先谢谢。
Serial.println("hello");
,则会强调println()
并声称无法解析。然后它编译得很好,并且该方法在上传到arduino板时有效。
EDIT2:我发现了我的错误,结果我试图在C文件中使用一些C ++函数,并且eclipse不喜欢它;我改名为.cpp,所有的红色都消失了;)谢谢你的帮助!
答案 0 :(得分:33)
Eclipse可能会也可能不会从构建设置中提取索引的路径,具体取决于配置。最有可能的是,它不是......它的构建正确,因为你的构建设置很好,你可以手工构建。
CDT索引器(用于决定所有那些漂亮的下划线以及代码完成,F3声明跳转等来自哪个引擎)在很多情况下都不够智能来解析你的Makefile并知道在哪里寻找标题和来源。您需要手动告诉Eclipse该信息。
转到项目属性 - > C / C ++一般 - >路径和符号。
根据您的环境,您需要投入的工作量可能会有很大差异。如果这个外部库是让你头疼的唯一的东西,那么你可能只需要添加该库的路径并重新索引:
右键点击该项目,然后选择索引 - >重建强>
答案 1 :(得分:6)
对于初学者来说,下划线是什么颜色的?这有所不同,因为黄色意味着它是一个警告,红色意味着它是一个错误(关键,在大多数情况下不会建立)。
其次,您需要查看“问题”标签以查看是否存在实际错误。如果那里什么也没有,那么确实可以正确编译。
现在,回到最初的问题。根据您正在构建的项目类型,这种行为并不罕见。 Eclipse似乎在索引某些项目方面表现不佳。当您从命令行运行“make all”时(这实际上是Eclipse在构建期间所做的那样),它可能会解析您的所有代码并构建它。
但是,Eclipse使用不同的独立工具来索引所有源代码并解析变量/函数定义和声明。这实际上是左手不知道右手在做什么的情况。
答案 2 :(得分:3)
以下解决方案对我有用: 单击右键单击您的项目。然后: 属性 - > C / C ++一般 - >路径和符号 - >符号 - > GNU C ++。 如果你有这个问题,几乎可以肯定没有任何符号。添加符号“__cplusplus”,其值为“201402L” 在这之后: 右键单击 项目 - >指数 - >重建 强> 你完成了。
答案 3 :(得分:1)
我在
中添加了文件夹项目属性 - > C / C ++一般 - >路径和符号 - >包括
当我删除它们时,红色下划线消失了,即构建和IDE同步。
答案 4 :(得分:1)
在解析符号时,CDT索引器似乎会考虑所有头文件,而不管编译单元中实际包含哪些头文件。 Eclipse Bugzilla提交了相应的错误报告:https://bugs.eclipse.org/bugs/show_bug.cgi?id=439553
答案 5 :(得分:0)
我遇到了同样的问题。
索引 - >重建没有帮助。
当我在 main.cpp 中添加了行#include <avr/iom1280.h>
并创建了索引 - &gt;重建强调消失。
然后我删除了行#include <avr/iom1280.h>
并仍然没有inderlines进行投影。
将iom1280.h
替换为您的控制器名称。查看“avr \ include \ avr \”文件夹中的可用名称
答案 6 :(得分:0)
Eclipse与C ++一样不能像使用Java那样工作,但是一旦你按下&#34; Rebuild&#34;它就应该警告你。在菜单栏中。
试试看,看看它是否能解决你的问题。
答案 7 :(得分:0)
在我的情况下,问题是由于在编译方言下的项目属性的语言标准字段中添加了“ -std = c ++ 17”标志。此后,构建传递错误,但程序运行正常。因此,Index> Rebuild的技巧解决了所有问题。
答案 8 :(得分:0)
如果您更改了配置(例如,使用notepad ++在* .cproject文件中进行编辑),则以下选项会有所帮助。 构建配置-> 清理所有,然后索引-> 重建