我想知道在使用gcc的「__attribute__
」關鍵字時是否有辦法擺脫CDT語法錯誤警告。關於__attribute__關鍵字的Eclipse CDT語法錯誤
不言而喻,我不想關閉CDT語法檢查。
我想知道在使用gcc的「__attribute__
」關鍵字時是否有辦法擺脫CDT語法錯誤警告。關於__attribute__關鍵字的Eclipse CDT語法錯誤
不言而喻,我不想關閉CDT語法檢查。
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
我還沒有嘗試過,我也沒有用過Eclipse一段時間,但這裏有一個想法:
在CDT設置爲Eclipse(或者只是你的項目)設置一個預定義宏(我似乎記得你可以告訴它什麼編譯器自動定義)名爲__attribute__
需要一個參數,並擴大到什麼。
也許我沒有解釋正確。讓我再試一個例子。基本上,目標是定義一個這樣工作的宏:
#if ECLIPSE_THINKS_THIS_IS_SET_BUT_GCC_DOESNT
#define __attribute__(X) /* nothing */
#endif
但是沒有在您的代碼中放入任何東西。
的 「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__
希望這會有所幫助。
這是完美,我相信這是正確的答案。這種方法的額外好處是它可以應用於多個項目而無需任何額外的項目配置。 – mrtumnus
ziu的回答也是工作XC8 Microchip的編譯器
Name: __interrupt
Value: (leave blank)
函數原型現在是乾淨的:
void __interrupt ISRs(void);
而Eclipse將不會抱怨。
這不適合我。它產生在構建一個錯誤: '語法錯誤:?意外「(」' 我認爲這是shell嘔吐的'(X)'宏的部分是,即使通過GCC支持 – mrtumnus