2017-05-26 57 views
0

根據的Keil C51,以下是有效的:處理的Keil C51關鍵字在Eclipse索引

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

根據Eclipse索引,然而,事實並非如此。 我們可以做出以下定義,以幫助的情況下:

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

但不幸的是,我們不能重新定義保留關鍵字「使用」,這將是愚蠢的,重新定義數字1或2

有沒有辦法讓Eclipse索引器解析古老的8051代碼,以獲得現代IDE的好處? 有沒有Eclipse的替代品,可以提供一種有效的方式來瀏覽這樣的C項目?具有相同的「打開調用層次結構」功能的東西?

+0

代碼中的變化是一個選項嗎?順便說一句,你的定義不會做你期望的事情(它們擴展爲空,因爲在擴展之前刪除了註釋),但這與這裏的效果無關。 –

回答

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 */ 
} 
+0

這個問題與其餘部分'1使用2'更相關。這並不容易擺脫。 – Gerhardh

+0

我明白了。仍然可以爲函數定義定義一個宏,並根據這個符號展開不同的東西。讓我更新它。 –

1

其實我創建了一個Eclipse插件正是爲了這是幾年前的目的。我已將代碼上傳到github。你可以在這裏找到這個插件的二進制版本: https://github.com/andersesbensen/eclipse-c51-plugin/blob/master/deployment/eclipse-c51-plugin.zip

你需要在C語言項目的「語言映射」下激活插件。

該插件可能不完美,但它是一個良好的開端。如果您發現任何不正常工作,請隨時爲代碼做貢獻。

此致敬禮 安德斯