2009-08-25 11 views
1

Verloren an diesem Teil des Codes.do_ nicht in diesem Bereich angegeben


    const struct editor_cmd_type editor_table[] = 
    { 
    /* { command   function  }, */ 

     { "area",   do_aedit  }, 
     { "room",   do_redit  }, 
     { "object",  do_oedit  }, 
     { "mobile",  do_medit  }, 
     { "mpcode",  do_mpedit  }, 
     { "hedit",  do_hedit  }, 

     { NULL,   0,    } 
    }; 

Fehler Ich erhalte:

 
olc.c:652: error: âdo_aeditâ was not declared in this scope 
olc.c:653: error: âdo_reditâ was not declared in this scope 
olc.c:654: error: âdo_oeditâ was not declared in this scope 
olc.c:655: error: âdo_meditâ was not declared in this scope 
olc.c:656: error: âdo_mpeditâ was not declared in this scope 
olc.c:657: error: âdo_heditâ was not declared in this scope 
make: *** [olc.o] Error 1 

Es gibt bereits void do_aedit, void do_redit und so in dem Code ... was bin ich dabei?

+0

Welche Code-Basis verwenden Sie? –

+2

Woher sollen diese Konstanten * kommen *? Dies erfordert viel mehr Kontext, um verständlich zu sein. –

Antwort

0

Sieht aus, als hätten Sie einige ungültige Leerzeichen in Ihrem Code (oder Sie haben die Fehler falsch eingefügt.) Wenn der erste versucht, den Code durch Ersetzen aller Leerzeichen mit einem Leerzeichen zu löschen.

0

Das klingt wie olc.h wurde nicht #included.

1

Sie sagen, dass void do_aedit usw. im Code definiert sind, aber von den Compiler-Fehlern hört es sich an, als wären diese undefiniert in der Datei olc.c (wo der angezeigte Code vermutlich ist). Sind die Funktionen vor dem angezeigten Code deklariert? Wenn sie in einer anderen Datei enthalten sind, ist sie enthalten?

1

Haben Sie versucht, entweder die relevanten Header-Dateien einzubinden oder alle Funktionen vor dem Array zu löschen?

dh wenn der Funktionsprototyp ist

void Function(void* param); 

dann

extern void Function(void* param); 

vor dem Array hinzuzufügen. Idealerweise möchten Sie die richtige Header-Datei enthalten.

0

Codebases: Rom24b6

Wo sind die const kommen? editor_table Erraten, hier ist der Code:

/* Search Table and Dispatch Command. */ 
    for (cmd = 0; editor_table[cmd].name != NULL; cmd++) 
    { 
     if (!str_prefix(command, editor_table[cmd].name)) 
     { 
      (*editor_table[cmd].do_fun) (ch, argument); 
      return; 
     } 
    } 

Hier ist die Leere CBearbeiten und solche, wo ich glaube, sollte sie bereits definiert werden.

void do_aedit(CHAR_DATA *ch, char *argument) 
{ 
    AREA_DATA *pArea; 
    int value; 
    char arg[MAX_STRING_LENGTH]; 

    if (IS_NPC(ch)) 
     return; 

    pArea  = ch->in_room->area; 

    argument = one_argument(argument,arg); 

    if (is_number(arg)) 
    { 

Der Rest ist im Grunde das gleiche.

+0

Sie sollten diese Informationen zu Ihrer Frage hinzufügen, anstatt sie in eine "Antwort" zu schreiben. –

0

Okay, Sie müssen Funktionsprototypen für jede der do_-Funktionen in der olc.c-Datei einfügen. Sie können dies folgendermaßen tun:

void do_aedit (CHAR_DATA * ch, char * Argument);

Fügen Sie einfach eine Zeile wie diese für jede Funktion, die oben in der olc.c-Datei fehlt, hinzu und versuchen Sie es erneut zu kompilieren.

0

Überprüfen Sie, ob sich do_aedit, do_redit usw. im globalen Namespace befinden oder ob sie nach Namespace oder Klassenname qualifiziert werden müssen.

Es könnte hilfreich sein, wenn Sie uns die Definitionen oder Deklarationen dieser Funktionen zeigen.

Verwandte Themen