[gnu.gcc.bug] incompatible pointer types

karl@mote.umb.edu ("Karl Berry.") (03/15/89)

I was under the (perhaps erroneous) impression that a `void*' was
supposed to match any other pointer type. gcc 1.34 (on a sun3)
complains about incompatible pointer types in the following program.

int compare(int *, int *);	/* used by qsort */
void qsort(char *, int, int, int (*)(void*,void*));

void main(int argc, char **argv, char **envp)
{
    int nvals;
    int val[10];		/* place for integers converted from args */

    nvals = argc - 1;
    qsort((char *)val, nvals, sizeof val[0], compare);

}
gcc -v -c qsort.ansi.c
gcc version 1.34
 /usr/local/gnu/lib/gcc-cpp -v -undef -D__GNUC__ -Dmc68000 -Dsun -Dunix -D__mc68000__ -D__sun__ -D__unix__ -D__HAVE_68881__ -Dmc68020 qsort.ansi.c /tmp/cca00450.cpp
GNU CPP version 1.34
 /usr/local/gnu/lib/gcc-cc1 /tmp/cca00450.cpp -quiet -dumpbase qsort.ansi.c -version -o /tmp/cca00450.s
GNU C version 1.34 (68k, MIT syntax) compiled by GNU C version 1.34.
qsort.ansi.c: In function main:
qsort.ansi.c:10: warning: argument passing between incompatible pointer types
 as -mc68020 /tmp/cca00450.s -o qsort.ansi.o