2012-03-26 10 views
0

私はos161プロジェクトで作業しています。 src/kern/includeにarray.hを含めたファイルを作成します。コンパイルすると、次のようなエラーが発生しました: ./../include/array.h:85:エラー: '='、 '、'、 ';'、 'asm'または 'アトリビュート' '符号なし' ../../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'が定義されていますか? –

+2

プリプロセッサの後にプログラムテキストを取得して表示してください。例えば。 gccの場合は "-E"です。最も可能性が高い変形は、インラインまたは奇妙なものの定義ではありません。 – Netch

+0

const構造体配列を追加できますか? さらにもう少しコードがあります。 コンパイルするコマンドは何ですか? – Patapoom

答えて

1

私はos161にも取り組んでいます。 INLINEが定義されていない場合は、#define ARRAYINLINE inlineを代わりに使用してください。

[編集]

私のos161リビジョンを確認しました。私は#define ARRAYINLINE INLINE

#define INLINE extern inline 
前にこのラインを見つけ

あなたarray.hも(私の場合には115)この行が含まれているのであれば確認してください

[/ EDIT]私もOS161に取り組んでいます

-1

このエラーは、関数外にランダムな文字がある場合に発生する可能性があります。 例:

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

sys_fork(...){ 
... 
} 
関連する問題