我正在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