首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Eclipse indexer中处理Keil C51关键字

在Eclipse indexer中处理Keil C51关键字
EN

Stack Overflow用户
提问于 2017-05-26 23:19:03
回答 2查看 166关注 0票数 0

根据Keil C51的说法,以下是有效的:

代码语言:javascript
复制
static void kernel(void) small interrupt 1 using 2
{
    /* do stuff */
}

然而,根据Eclipse索引器,它不是。我们可以做以下定义来帮助解决这种情况:

代码语言:javascript
复制
#define small /*small*/
#define interrupt /*interrupt*/

但不幸的是,我们不能重新定义保留关键字'using‘,并且重新定义数字1或2将是愚蠢的。

有没有一种方法可以让Eclipse索引器解析古老的8051代码,从而获得现代IDE的好处?有没有一种Eclipse的替代方案可以提供一种高效的方式来浏览这样的C项目?有一个等价的“开放调用层次”函数吗?

EN

回答 2

Stack Overflow用户

发布于 2017-06-03 04:53:01

事实上,我早在几年前就为此目的创建了一个Eclipse插件。我已经把代码上传到github了。你可以在这里找到该插件的二进制版本:https://github.com/andersesbensen/eclipse-c51-plugin/blob/master/deployment/eclipse-c51-plugin.zip

你需要在C项目的"Language Mappings“下激活插件。

这个插件可能并不完美,但它是一个好的开始。如果您发现有任何不起作用的地方,请随时为代码做贡献。

向Anders致以最好的问候

票数 1
EN

Stack Overflow用户

发布于 2017-05-26 23:35:38

您只能为CDT索引器重新定义有问题的关键字。当索引器运行时,符号__CDT_PARSER__被定义。当比较器运行时,此符号将不会被定义。所以你可以这样做:

代码语言:javascript
复制
#ifdef __CDT_PARSER__
#undef small
#define small
//....etc
#endif

或者,您可以使用宏来替换函数定义:

代码语言:javascript
复制
#ifndef __CDT_PARSER__
#define KEIL_SPECIFIC_STUFF(param1, param2) small interrupt param1 using param2
#else 
#define KEIL_SPECIFIC_STUFF(param1, param2)
#endif

然后

代码语言:javascript
复制
static void kernel(void) KEIL_SPECIFIC_STUFF(1,2)
{
    /* do stuff */
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44205044

复制
相关文章

相似问题

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