[Bug c/30949] New: "incompatible pointer type" warning does not point to declaration

schnetter at aei dot mpg dot de gcc-bugzilla@gcc.gnu.org
Sat Feb 24 18:48:00 GMT 2007


I passed a pointer of the wrong type to a function.  I received a warning about
this.  This warning contained only little information; it only said that the
pointer types differ.  It did not specify what type was passed, nor what type
was expected, nor where the declaration of the called function is.

A test programme is

int func (int x);
void recv (int (* funcptr) (double x));
void call (void)
{
  recv (func);
}

This programme calls "recv" with a wrong argument.  When I compile this, I
receive the warning below:

$ ~/gcc/bin/gcc --version
gcc (GCC) 4.3.0 20070201 (experimental)
$ ~/gcc/bin/gcc -Wall -c fptr.c 
fptr.c: In function ‘call’:
fptr.c:7: warning: passing argument 1 of ‘recv’ from incompatible pointer type

I would have liked a multi-line warning, pointing to the line which declares
"recv".  I also would have liked an explanation like "the passed argument is of
type int (*)(int), but the type int (*)(double) is expected".


-- 
           Summary: "incompatible pointer type" warning does not point to
                    declaration
           Product: gcc
           Version: 4.3.0
            Status: UNCONFIRMED
          Severity: enhancement
          Priority: P3
         Component: c
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: schnetter at aei dot mpg dot de
 GCC build triplet: i386-apple-darwin8.8.1
  GCC host triplet: i386-apple-darwin8.8.1
GCC target triplet: i386-apple-darwin8.8.1


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30949



More information about the Gcc-bugs mailing list