Casting void - int question

bright at dataio.UUCP bright at dataio.UUCP
Thu Oct 16 02:54:28 AEST 1986

In article <26 at orion.UUCP> heins at orion.UUCP (Michael T. Heins) writes:
>I have a number of existing functions with compatible arguments.  Some
>are declared as void, and others as int.  None of the return values are
>used.  I wish to set up an array of pointers to these functions.
>My problem is that the compiler complains about incompatible types, and
>I can't figure out how to use casts or unions to solve the problem.
>Re-declaring the functions is not an option.  I have exemplified the
>situation below:
>int fna() { }
>void fnb() { }
>int (*array[32])();
>main() {
>    array[0] = fna;
>    array[1] = fnb; /* This won't work as-is. */
>I have tried things like
>	array[1] = (int (*)())fnb;
>but this generates the message "operands of CAST have incompatible types".

int fna() { }
void fnb() { }

int callfnb() { fnb(); }

int (*array[32])();
main() {
    array[0] = fna;
    array[1] = callfnb;

Messy, but workable.

More information about the Comp.lang.c mailing list