> Just wondering why this was making a pointer from integer without cast ;) > Here's the structure: > > #define EVENT(name) void (name)(void *causer, void *victim, long info) ^^^^^^^^^ Note info is data type long > > struct event_info { > int ticks_to_go; > EVENT(*func); > void *causer,*victim; > void *info; ^^^^^^^^^^^^ Note here info is type Void Pointer (void *) > struct event_info *temp; > > (temp->func)(temp->causer,temp->victim,temp->info); ^^^^^^^^ Here youre passing a void * when the function expects a long int as the definitio of add event shows: void add_event(int delay,EVENT(*func),void *causer,void *victim,void *info) info is used as a char *, its the 'argument' being passed the the EVENT Why its defined as a long in structs.h im not sure, but i guess it to be to do with that teleport event example that code came with. Also I think its asssuming that the size of a pointer is the same as a size of a long, thats why it works anyways, course if it was a near pointer and not a long, youd have problems. Anyways your fix .. typecasting .. (temp->func)(temp->causer,temp->victim,(int)temp->info); This is in events.c where the event function is actually called. As when you pass a char buffer, like char *buf, you are actually passing the address in memory where said buffer is stored, this works, though it really should be a (void *) here and in structs.h methinks Then when you write events, you have this info variable, with the arguments passed to it, however its type int *blink* What you end up having to do is this: EVENT(delayed_command) { ACMD(do_gen_comm); do_gen_comm(CAUSER_CH, (char *)info, 0, SCMD_INFORMATION); } That being, type cast the info var back into a (char *) > > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > > That line creates an error reading: > passing arg 3 makes integer from pointer without a cast In these event queus, info is a char * ******************************************************************* * Ron Hensley ron@dmv.com * * Network Administrator http://www.dmv.com/~ron * * PGP Key at WWW Page * * DelMarVa OnLine 749-7898 Ext. 403 * ******************************************************************* +------------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html | +------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/15/00 PST