2013-05-13 40 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

相關問題