c - 在 Eclipse 索引器中处理 Keil C51 关键字



根据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 项目?具有等效的"开放呼叫层次结构"功能?

事实上,

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

您需要在 C 项目中的"语言映射"下激活插件。

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

此致敬意Anders

只能为 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 */
}

最新更新