Mail Archives: djgpp/1996/04/07/00:57:59
On Fri, 5 Apr 1996, Jethro Wright wrote:
> - this is the prototype for the fn I want to pass:
>
> void newfn( u_int s, void *, void * )
>
> - this is the prototype for the fn I'm supposed to use:
>
> void oldfn( int s, void *, void * )
>
> - I "thought" a cast like this would work:
>
> ((void) ((int), (void *), (void *))) newfn
This should do the trick:
(void (*)(int, void *, void *))newfn
But beware: when a C compiler sees this, it actually generates code to
call `newfn' with a calling sequence that is appropriate for `oldfn'. In
this case, it converts `s' from int to unsigned int, but other subtle
things might be going on there too. This is what casting function
pointers means. It's best to avoid it, unless you can't do otherwise.
- Raw text -