【发布时间】:2012-03-26 09:10:03
【问题描述】:
我正在开发 os161 项目。我创建了一个包含 src/kern/include 中提供的 array.h 的文件。当我编译时,我遇到了这样的错误: ./../include/array.h:85:错误:在 'unsigned' 之前需要 '='、','、';'、'asm' 或 'attribute' ../../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 文件,我没有对其进行任何更改。实在想不通为什么。
【问题讨论】:
-
你能添加 const struct 数组吗?还有更多的代码。你的编译命令是什么?
-
错误表示编译器无法理解
INLINE是什么。也许#define ARRAYINLINE INLINE是define ARRAYINLINE inline请求编译器inline函数?如果没有,在编译时是否定义了INLINE? -
尝试在预处理后获取程序文本并显示出来。例如。对于 gcc,它是选项“-E”。最可能的变体是没有定义 INLINE 或奇怪的定义。