2012-03-26 8 views
0

Ich arbeite an dem Os161-Projekt. Ich erstelle eine Datei, die das Array.h in src/kern/include enthält. Wenn ich kompiliere, hatte ich den Fehler so: ./../include/array.h:85: error: expected '=', ',', ';', 'asm' oder 'Attribut' vorher 'unsigned' ../../include/array.h:91: Fehler: erwartet '=', ' ' ';', 'ASM' oder' Attribut' vor 'VOID'OS161 erwartete '=', ',', ';', 'asm' oder '__attribute__' vor dem Fehler

der Code wie:

#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]; 
} 

und diese Art von Fehlern in jeder Zeile hat so etwas wie INLINE oder ARRAYINLINE passiert ist. Diese array.h Datei wird zur Verfügung gestellt und ich habe keine Änderung daran vorgenommen. Wirklich kann nicht herausfinden, warum.

+0

Fehler sagt, dass der Compiler ist nicht in der Lage zu verstehen, was 'INLINE' ist. Vielleicht ist '#define ARRAYINLINE INLINE'' 'define ARRAYINLINE inline' und fordert den Compiler auf, die Funktionen' inline' anzuordnen? Wenn nicht, wird INLINE beim Kompilieren definiert? –

+2

Versuchen Sie, Programmtext nach Präprozessor zu bekommen und zeigen Sie es. Z.B. Für GCC ist die Option "-E". Die wahrscheinlichste Variante ist keine Definition von INLINE oder einer fremden. – Netch

+0

Können Sie das const struct Array bitte hinzufügen? Und ein bisschen mehr Code auch. Welchen Befehl kompilieren Sie? – Patapoom

Antwort

1

Ich arbeite auch an os161. INLINE ist nicht definiert, versuchen Sie stattdessen #define ARRAYINLINE inline.

[EDIT]

überprüfte ich meine os161 Revision. Ich fand diese Zeile vor der #define ARRAYINLINE INLINE

#define INLINE extern inline 

Also bitte überprüfen, ob Ihr array.h enthält auch diese Zeile (115 in meinem Fall)

[/ EDIT]

-1

Ich bin auch auf OS161 Arbeits , dieser Fehler könnte generiert werden, wenn Sie ein zufälliges Zeichen außerhalb Ihrer Funktion haben. Beispiel:

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

sys_fork(...){ 
... 
} 
Verwandte Themen