2011-11-01 94 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将不会抱怨。

相关问题