2012-03-26 58 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(...){ 
... 
} 
相关问题