2012-03-26 3 views
0

Я работаю над проектом os161. Я создаю файл, который включает array.h в src/kern/include. Когда я компилирую, у меня была ошибка: ./../include/array.h:85: error: expected '=', ',', ';', 'asm' или 'атрибут' 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]; 
} 

и такого рода ошибка произошла в каждой строке есть что-то вроде INLINE или ARRAYINLINE. Этот файл array.h предоставляется, и я не сделал никаких изменений. На самом деле не могу понять, почему.

+0

Ошибка говорит о том, что компилятор не может понять, что такое 'INLINE'. Может быть, '#define ARRAYINLINE INLINE' является' define ARRAYINLINE inline', запрашивая компилятор 'inline' функции? Если нет, определяется ли 'INLINE' при компиляции? –

+2

Постарайтесь получить текст программы после препроцессора и показать его. Например. для gcc это опция «-E». Наиболее вероятным вариантом является определение INLINE или странное. – Netch

+0

Можете ли вы добавить массив const struct, пожалуйста? И еще немного кода. Какова ваша команда для компиляции? – Patapoom

ответ

1

Я тоже работаю над os161. INLINE не определен, попробуйте вместо этого использовать #define ARRAYINLINE inline.

[EDIT]

Я проверил мой os161 пересмотр. Я нашел эту строку перед #define ARRAYINLINE INLINE

#define INLINE extern inline 

Поэтому, пожалуйста, проверьте, если ваша array.h также содержит эту линию (115 в моем случае)

[/ EDIT]

-1

Я работаю над OS161, а также , эта ошибка может быть сгенерирована, если у вас есть случайный символ вне вашей функции. Пример:

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

sys_fork(...){ 
... 
} 
Смежные вопросы