私は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ファイルは提供されており、私はそれに変更を加えませんでした。本当に理由を理解することはできません。
エラーでは、コンパイラは 'INLINE 'が何であるかを理解できません。たぶん '#define ARRAYINLINE INLINE'は' define ARRAYINLINE inline'ですか?コンパイラに関数のインライン展開を要求しているのでしょうか?そうでない場合、コンパイル中に 'INLINE'が定義されていますか? –
プリプロセッサの後にプログラムテキストを取得して表示してください。例えば。 gccの場合は "-E"です。最も可能性が高い変形は、インラインまたは奇妙なものの定義ではありません。 – Netch
const構造体配列を追加できますか? さらにもう少しコードがあります。 コンパイルするコマンドは何ですか? – Patapoom