根据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项目?有一个等价的“开放调用层次”函数吗?
发布于 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致以最好的问候
发布于 2017-05-26 23:35:38
您只能为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 */
}https://stackoverflow.com/questions/44205044
复制相似问题