Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!watmath!clyde!caip!brl-adm!brl-smoke!smoke!sunuk!sunthing!jnm@Sun.COM From: jnm@Sun.COM Newsgroups: net.lang.c Subject: Re: Casting void - int question Message-ID: <4639@brl-smoke.ARPA> Date: Wed, 15-Oct-86 20:03:56 EDT Article-I.D.: brl-smok.4639 Posted: Wed Oct 15 20:03:56 1986 Date-Received: Tue, 21-Oct-86 21:48:59 EDT Sender: news@brl-smoke.ARPA Lines: 50 Interestingly, you second example, using array[1] = (int(*)())fnb; works fine on my machine (A Sun Workstation)... Here is some code I wrote to achieve what you were trying to do using alternative methods which may be useful. I included the typedef's to make things more legible... 1. The following program compiles ... int fna() { } void fnb() { } typedef int (*pfi)(); typedef void (*pfv)(); pfi array[32]; main() { array[0] = fna; array[1] = (pfi)fnb; } 2. Use Unions instead of casting ... int fna() { } void fnb() { } typedef int (*pfi)(); typedef void (*pfv)(); struct { union { pfi fnint; pfv fnvoid; } Union; } array[32]; main() { array[0].Union.fnint = fna; array[1].Union.fnvoid = fnb; } Hope that's useful Jonathan sun!sunuk!jmills