我正在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文件是提供的,我沒有改變它。真的不知道爲什麼。
錯誤表示編譯器無法理解「INLINE」是什麼。也許'#define ARRAYINLINE INLINE'是'define ARRAYINLINE inline',請求編譯器'內聯'這些函數?如果沒有,編譯時是否定義了'INLINE'? – 2012-03-26 09:22:54
嘗試在預處理程序之後獲取程序文本並顯示它。例如。對於gcc它是選項「-E」。最可能的變種是沒有INLINE或奇怪的定義。 – Netch 2012-03-26 09:30:16
你可以添加const結構數組嗎? 還有一些代碼。 你的編譯命令是什麼? – Patapoom 2012-03-26 09:22:02