我正在研究os161项目。我在src / kern / include中创建了一个包含array.h的文件。当我编译时,我有这样的错误: ./../include/array.h:85:错误:在'unsigned'之前预期'=',',',';','asm'或'属性' ../../include/array.h:91:错误:在'void'之前预期'=',',',';','asm'或'属性'
代码如下:
#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];
}
并且在每一行发生的这种错误都有类似INLINE或ARRAYINLINE的错误。提供了这个array.h文件,我没有对它进行任何更改。真的无法弄清楚为什么。
答案 0 :(得分:1)
我也在研究os161。 INLINE
未定义,请尝试使用#define ARRAYINLINE inline
。
[编辑]
我检查了我的os161版本。我在#define ARRAYINLINE INLINE
#define INLINE extern inline
因此,请检查您的array.h
是否也包含此行(在我的情况下为115)
[/编辑]
答案 1 :(得分:-1)
我也在OS161上工作,如果你的函数外面有一个随机字符,就会产生这个错误。 例如:
#include <...>
...
e //<-this random character that could have been mistyped.
sys_fork(...){
...
}