C programming question

Mike Meyer mwm at mired.org
Mon Apr 4 11:47:34 PDT 2005


In <42518AC9.5070208 at comcast.net>, Matt <mhersant at comcast.net> typed:
> I need some help understanding some C code. 
> 
> int     (*if_ioctl)
>         (struct ifnet *, int, caddr_t);
> 
> int     (*if_watchdog)
>         (int);
> 
> Can someone break down these declarations (if that's what they are)?  Is 
> this a form of typecasting?  Thanks for your help.

cdecl (in the ports tree) is your friend:

guru% cdecl
Type `help' or `?' for help
explain int (*if_ioctl)(struct ifnet *, int, caddr_t);
declare if_ioctl as pointer to function (pointer to struct ifnet, int, caddr_t) returning int
explain int (*if_watchdog)(int);
declare if_watchdog as pointer to function (int) returning int

Note that the parens around the "pointer to function" part are required:

explain int *if_watchdog(int);
declare if_watchdog as function (int) returning pointer to int

	<mike
-- 
Mike Meyer <mwm at mired.org>		http://www.mired.org/consulting.html
Independent Network/Unix/Perforce consultant, email for more information.


More information about the freebsd-hackers mailing list