Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 4 Apr 2005 13:47:27 -0500
From:      Mike Meyer <mwm@mired.org>
To:        Matt <mhersant@comcast.net>
Cc:        misc@openbsd.org
Subject:   Re: C programming question
Message-ID:  <16977.35775.940391.458960@guru.mired.org>
In-Reply-To: <42518AC9.5070208@comcast.net>
References:  <42518AC9.5070208@comcast.net>

next in thread | previous in thread | raw e-mail | index | archive | help
In <42518AC9.5070208@comcast.net>, Matt <mhersant@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@mired.org>		http://www.mired.org/consulting.html
Independent Network/Unix/Perforce consultant, email for more information.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?16977.35775.940391.458960>