2012-03-26 106 views
0

我正在os161項目上工作。我創建了一個包含src/kern/include中array.h的文件。當我編譯時,出現如下錯誤: ./../include/array.h:85:error:expected'=',',';','asm'或'attribute'before '無符號' ../../include/array.h:91:錯誤:預期 '=', ' ' ';', 'ASM' 或' 屬性' 前 '空隙'OS161預期'=',',',';','asm'或'__attribute__'出錯前

代碼如下:

#ifndef ARRAYINLINE 
#define ARRAYINLINE INLINE 
#endif 

ARRAYINLINE unsigned --------------line 85 error 
array_num(const struct array *a) 
{ 
    return a->num; 
} 

ARRAYINLINE void *  --------------line 91 error 
array_get(const struct array *a, unsigned index) 
{ 
    ARRAYASSERT(index < a->num); 
    return a->v[index]; 
} 

而且這種錯誤發生在每一行裏有行內或ARRAYINLINE。這個array.h文件是提供的,我沒有改變它。真的不知道爲什麼。

+0

錯誤表示編譯器無法理解「INLINE」是什麼。也許'#define ARRAYINLINE INLINE'是'define ARRAYINLINE inline',請求編譯器'內聯'這些函數?如果沒有,編譯時是否定義了'INLINE'? – 2012-03-26 09:22:54

+2

嘗試在預處理程序之後獲取程序文本並顯示它。例如。對於gcc它是選項「-E」。最可能的變種是沒有INLINE或奇怪的定義。 – Netch 2012-03-26 09:30:16

+0

你可以添加const結構數組嗎? 還有一些代碼。 你的編譯命令是什麼? – Patapoom 2012-03-26 09:22:02

回答

1

我也在os161上工作。 INLINE未定義,請嘗試使用#define ARRAYINLINE inline代替。

[編輯]

我檢查了我的os161修訂版。我發現這行之前#define ARRAYINLINE INLINE

#define INLINE extern inline 

所以,請檢查您的array.h還含有(在我的案件115)這一行

[/編輯]

-1

我工作的OS161以及,如果你的函數之外有一個隨機字符,就會產生這個錯誤。 示例:

#include <...> 
... 
e //<-this random character that could have been mistyped. 

sys_fork(...){ 
... 
} 
相關問題