zeke wrote: > > At 02:56 AM 8/14/96 -0400, you wrote: > >heya, > >I just tried to install the event handler code from the ftp site but am > >having a problem, and was wondering if anyone else had this problem > > > >I installed as per the instructions but when the compiler tries to > >compile event.obj i get syntax errors in structs.h and comm.h, these > >files compile fine for all other occurrences why don't they for > >event.obj? > > > >i am running in win95 using MSVC++ v 4.0 > > > >thanks for any help, > >John > You most likely have a parse error somewhere in events.c I don't know if > MSCV++ 4.0 outputs any errors to the screen while compiling like gcc does, > but if so look at them and try to find out where the error is. What > probably happened is that you missed a (){};"" or something somewhere and > MSVC++ is trying to redefine something already defined in structs.h or > comm.h. Well, hope you find the problem. > > Zeke well i figured out part of the problem i added sysdep.h and conf.h to the includes and in the make file and it compiles but i get two errors when compiling: event.c(33) : warning C4047: 'function' : 'long ' differs in levels of indirection from 'void *' event.c(33) : warning C4024: 'function through pointer' : different types for formal and actual parameter 3 here are the lines of code: -event.c- #include <stdio.h> #include <stdlib.h> #include "conf.h" #include "sysdep.h" #include "structs.h" #include "event.h" #include "utils.h" #include "comm.h" #include "handler.h" #include "db.h" int in_event_handler=0; struct event_info *pending_events = NULL; struct event_info *prev = NULL; void run_events() { struct event_info *temp, *prox; in_event_handler=1; prev=NULL; for(temp=pending_events;temp;temp=prox) { prox=temp->next; temp->ticks_to_go--; if (temp->ticks_to_go==0) { /* run the event */ if (!temp->func) log("SYSERR: Attempting to run a NULL event. Ignoring"); else >>this is line 33>> (temp->func)(temp->causer,temp->victim,temp->info); /* remove the event from the list. */ if (!prev) pending_events=prox; else prev->next=prox; free(temp); } else if (temp->ticks_to_go==-1) { if (!prev) pending_events=prox; else prev->next=prox; free(temp); } else prev=temp; }; in_event_handler=0; }; void add_event(int delay,EVENT(*func),void *causer,void *victim,void *info) { struct event_info *new; CREATE(new,struct event_info,1); new->ticks_to_go=delay; new->func=func; new->causer=causer; new->victim=victim; new->info=info; new->next=pending_events; pending_events=new; if (in_event_handler && !prev) prev=pending_events; }; void clean_events(void *pointer) { struct event_info *temp,*prox; struct event_info *previous; if (in_event_handler) log("SYSERR: Trying to remove events inside the handler. Attempting to continue."); previous=NULL; for(temp=pending_events;temp;temp=prox) { prox=temp->next; if (temp->causer==pointer || temp->victim==pointer || (void *)(temp->func)==pointer) temp->ticks_to_go=0; }; }; -event.h- /* The macros provide the type casting useful when writing event drivers. */ #define VICTIM_CH ((struct char_data *)victim) #define CAUSER_CH ((struct char_data *)causer) #define VICTIM_OBJ ((struct obj_data *)victim) #define CAUSER_OBJ ((struct obj_data *)causer) void add_event(int delay,EVENT(*func),void *causer,void *victim,void *info); void run_events(); void clean_events(void *pointer); any help is appreciated, John +-----------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://cspo.queensu.ca/~fletcher/Circle/list_faq.html | +-----------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/07/00 PST