我设置Eclipse C++ - 版本:Neon版本(4.6.0) - 版本ID:20160613-1800 - 使用GNU gcc ARM嵌入式工具链(而不是gcc4mbed)。工具链很好用,但是我遇到了一个涉及(我认为)Eclipse最近项目的索引器的问题。为什么Eclipse的索引器识别一些类,但不识别其他类?
创建一些类的#include“mbed.h”
声明类型DigitalOut的一些成员变量:如果我给我的重现问题的步骤
我的问题应该是清楚的。请注意,Eclipse认识到这一点很好,因为文本变成了粗体,并且在与变量交互时代码完成工作正常。
声明另一个类型为PwmOut的成员变量。请注意,Eclipse不会识别这一点,文本不会变为粗体,并且代码完成不起作用,因为Eclipse不知道PwmOut是什么。 Eclipse中说:
错误(1项)
类型 'PWMOUT' 无法解析。 - main.cpp中 - 语义错误
- 构建项目成功完成,编译器不引发错误,尽管Eclipse中始终不承认PWMOUT。 Binary在我的LPC1768上正确运行。
Eclipse如何识别DigitalOut而不是PwmOut?两者都在mbed.h中的相同代码块中列出 - 而DigitalOut.h与PwmOut.h位于同一目录中。
如果有帮助,here is an example project我从developer.mbed.org导出,您可以导入到Eclipse C++作为现有的Makefile项目。
我试着调整我发现的建议,例如在项目 - >属性 - > C/C++常规 - >路径和符号 - >包括,重建索引和“清新”中的所有文件该指数。我无法让Eclipse识别它们。
编辑:我想补充说,如果我点击“类型”PwmOut“无法解决”在“问题”窗口中的错误消息,Eclipse锁定了几秒钟,然后崩溃与堆栈溢出。
要检查的一件事是在代码中未定义的makefile中定义的名称。 Codan可能认为'PwmOut'由于条件编译而被排除在外。 – user4581301
@ user4581301感谢您的建议。你能澄清你的意思吗?这是当您从developer.mbed.org导出项目时随项目提供的Makefile的要点https://gist.github.com/yankee14/c73325c1ab035c167bc2b3c3117dfe09 – Yankee
对不起,但我不会从互联网上下载匿名内容。你正在寻找的是在makefile的编译器规则中使用gcc编译器选项'-D'。这些通常用于通过指示编译器不编译代码区域来打开或关闭功能。例如'#ifdef DEBUG std :: cerr <<“调试信息\ n”#endif'。如果DEBUG已经在代码中使用'#define DEBUG'定义,或者在编译器命令行中使用'-D DEBUG'定义,则会打印“Debug Message”。请注意,这只是这个问题的一个常见解决方案。这可能不是你的解决方案。 –
user4581301