0

我正在做 os161 项目。我创建了一个包含 src/kern/include 中提供的 array.h 的文件。编译时,出现如下错误:./../include/array.h:85: error: expected '=', ',', ';', 'asm' or ' attribute ' before 'unsigned' ../../include/array.h:91:错误:在 'void' 之前应有 '='、','、';'、'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];
}

这种错误发生在每一行都有类似 INLINE 或 ARRAYINLINE 的东西。提供了这个 array.h 文件,我没有对其进行任何更改。实在想不通为什么。

4

2 回答 2

1

我也在研究 os161。INLINE未定义,请尝试使用#define ARRAYINLINE inline

[编辑]

我检查了我的 os161 修订版。我在之前找到了这条线#define ARRAYINLINE INLINE

#define INLINE extern inline

所以请检查您是否array.h也包含此行(在我的情况下为 115)

[/编辑]

于 2012-03-26T12:42:30.703 回答
-1

我也在使用 OS161,如果您的函数之外有随机字符,则可能会生成此错误。例子:

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

sys_fork(...){
...
}
于 2015-02-26T04:03:27.037 回答