2011-11-01 56 views

回答

2
Project->Properties->C/C++ general->Path and Symbols->Symbols 

Add-> 
    Name: __attribute__(X) 
    Value: (leave blank) 

相關鏈接:You can use this technique basically with any offending keyword

+0

這不適合我。它產生在構建一個錯誤: '語法錯誤:?意外「(」' 我認爲這是shell嘔吐的'(X)'宏的部分是,即使通過GCC支持 – mrtumnus

2

我還沒有嘗試過,我也沒有用過Eclipse一段時間,但這裏有一個想法:

在CDT設置爲Eclipse(或者只是你的項目)設置一個預定義宏(我似乎記得你可以告訴它什麼編譯器自動定義)名爲__attribute__需要一個參數,並擴大到什麼。

也許我沒有解釋正確。讓我再試一個例子。基本上,目標是定義一個這樣工作的宏:

#if ECLIPSE_THINKS_THIS_IS_SET_BUT_GCC_DOESNT 
#define __attribute__(X) /* nothing */ 
#endif 

但是沒有在您的代碼中放入任何東西。

+0

我正在深入研究。 – ziu

+0

感謝您的提示,我解決了這個問題。我發佈了一個直接的答案,你得到了賞金。 – ziu

+0

謝謝,我很高興它爲你工作。 :) – ams

3

的 「ECLIPSE_THINKS_THIS_IS_SET_BUT_GCC_DOESNT」 的定義(從AMS的回答)真的extsts並呼籲__CDT_PARSER__。例如:

#ifdef __CDT_PARSER__ 
#define __FILE__    "<file>" 
#define __LINE__    (-1) 
#define __DATE__    "<date>" 
#define __TIME__    "<time>" 
#endif // #ifdef __CDT_PARSER__ 

希望這會有所幫助。

+0

這是完美,我相信這是正確的答案。這種方法的額外好處是它可以應用於多個項目而無需任何額外的項目配置。 – mrtumnus

1

ziu的回答也是工作XC8 Microchip的編譯器

Name: __interrupt 
Value: (leave blank) 

函數原型現在是乾淨的:

void __interrupt ISRs(void); 

而Eclipse將不會抱怨。

相關問題