2013-05-13 56 views
0

我正在用mbed的在线编译器进行编程,但是现在我需要调试支持,并且昨晚我导出到了uVision 4上。虽然我编译官方库时似乎有错误。将mbed应用程序导出到uVision

mbed/KL25Z/gpio_object.h(33):警告:#260-d:显式类型伊辛( “INT” 假定)
mbed/KL25Z/gpio_object.h(33):错误:#65:预期一个 ”;”

该代码在其他平台上也是如此。在33行看起来像这样的代码...

static inline void gpio_write(gpio_t *obj, int value) { 
    if (value) 
     *obj->reg_set = obj->mask; 
    else 
     *obj->reg_clr = obj->mask; 
} 

我试图围绕的if-else用括号和没有工作,所以现在我不知道该怎么办......

回答

4

默认情况下,C编译为ISO C90,其中inline关键字无效。二者必选其一:

  • __inline C90扩展,
  • C++编译或
  • C99编译。

没有这些,C90编译器会将代码解析为静态变量“inline”的声明,而没有显式类型和缺少的分号。

+0

我是uVision新手,我在哪里将其更改为C99或C++? – 2013-05-13 14:22:34

+0

K,所以我尝试了c99和cpp,他们给了我很多错误。它似乎承认 - 内联,但仍然给我同样的错误... – 2013-05-13 14:34:59

+0

这是'__inline'不是'--inline'代替关键字'inline'在代码中不是命令行开关(只是为了清除)。而且'static'和'__inline'在一起没什么意义 - 删除'static'(或'inline' - 无论哪种方式)。如果您在使用C++或C99编译时遇到错误,那么在发现另一个问题时应注意其他问题 - 这可能表明存在其他问题。 – Clifford 2013-05-13 15:42:38

相关问题