嵌入式C代码无法解释的语法错误;预期 ... 在“{”标记之前

Embedded C code unexplainable syntax error; Expected ... before '{' token

我现在开始使用 Eclipse,我注意到在我编写的每个函数中都会出现这个错误。对此还没有任何帮助。

#include "init.h"
#include "irq.h"

void T0Handler (void) _attribute_ ((interrupt ("IRQ")));


int main(void)
{
    systemInit(); /*CCLK = 50MHz; PCLK = 25MHz*/

    install_irq(TIMER0_INT, T0Handler, 0);

    for(;;);
}

以上只是一个初始化代码片段。

但是,弹出一个错误提示:

描述资源路径位置类型 在“{”标记 assignment1.c Template_Proteus 行 14 C/C++问题

就主要功能而言,这不可能是真的。因为它期望在 main() 和 main 的左大括号之间写入那些标记。

我在 Eclipse 中编写的每个函数(在 Virtualbox 中工作)都会出现此类问题。

此外,在 T0Handler 声明中,

存在语法问题

_attribute_ ((interrupt ("IRQ")))部分.

Eclipses 的解析器(这是驱动编辑器内高亮显示的原因)不理解您正在使用的特定于编译器的扩展。

不确定如何解决这个问题,但我认为这是嵌入式开发中的一个常见问题。

我找到了一个答案 adapted from here,它指出您可以通过编写针对 Eclipse 索引器的代码来修复它,如下所示:

#ifdef __CDT_PARSER__
#define _attribute_ (...)
#endif

我还没有测试过这个。