丢失了这部分代码。
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, }
};
我得到的错误:
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
代码中已经有void do_aedit
,void do_redit
等...我缺少什么?
答案 0 :(得分:1)
你说void do_aedit等是在代码中定义的,但是从编译器错误来看,它听起来像文件中的未定义,olc.c(可能是显示的代码)。是否在显示的代码之前声明了函数?如果它们在另一个文件中,是否包括在内?
答案 1 :(得分:1)
您是否尝试过包含相关的头文件或者在数组之前外部所有函数?
即如果函数原型是
void Function( void* param );
然后添加
extern void Function( void* param );
在数组之前。理想情况下,您希望包含正确的头文件。
答案 2 :(得分:0)
您的代码中看起来有一些非法的空格字符(或者您错误地粘贴了错误。)如果前者尝试通过用单个空格替换所有空格来完全打印代码。
答案 3 :(得分:0)
听起来olc.h
并非#included
。
答案 4 :(得分:0)
代码库:Rom24b6
const来自哪里?猜编辑器,这是代码:
/* 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;
}
}
这是虚空的aedit,我相信它们应该已经定义了。
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 ) )
{
其余基本相同。
答案 5 :(得分:0)
好的,您需要为olc.c文件中的每个do_函数包含函数原型。你可以这样做:
void do_aedit(CHAR_DATA * ch,char * argument);
只需为olc.c文件顶部缺少的每个函数添加一行,然后重新编译。
答案 6 :(得分:0)
检查do_aedit
,do_redit
等是否在全局命名空间中,或者是否需要通过命名空间或类名限定。
如果您向我们展示这些功能的定义或声明,可能会有所帮助。