0

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

static void kernel(void) small interrupt 1 using 2
{
    /* do stuff */
}

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

#define small /*small*/
#define interrupt /*interrupt*/

但不幸的是,我们无法重新定义保留关键字“using”,重新定义数字 1 或 2 会很愚蠢。

有没有办法让 Eclipse 索引器解析古老的 8051 代码以获得现代 IDE 的好处?是否有替代 Eclipse 的方法可以提供一种有效的方式来浏览这样的 C 项目?具有等效“Open Call Hierarchy”功能的东西?

4

2 回答 2

1

In fact I created an Eclipse plugin exactly for this purpose a few years ago. I've uploaded the code to github. You may find a binary build of the plugin here: https://github.com/andersesbensen/eclipse-c51-plugin/blob/master/deployment/eclipse-c51-plugin.zip

You need to activate to plugin under "Language Mappings" in your C project.

The plugin may not be perfect, but its a good start. Feel free to contribute to the code if you find anything not working.

Best regards Anders

于 2017-06-02T20:53:00.737 回答
0

只能为 CDT 索引器重新定义有问题的关键字。当索引器运行时,符号__CDT_PARSER__被定义。当编译运行时,这个符号不会被定义。因此,您可以执行以下操作:

#ifdef __CDT_PARSER__
#undef small
#define small
//....etc
#endif

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

#ifndef __CDT_PARSER__
#define KEIL_SPECIFIC_STUFF(param1, param2) small interrupt param1 using param2
#else 
#define KEIL_SPECIFIC_STUFF(param1, param2)
#endif

接着

static void kernel(void) KEIL_SPECIFIC_STUFF(1,2)
{
    /* do stuff */
}
于 2017-05-26T15:35:37.997 回答