------- Comment #10 from kst at mib dot org 2008-03-30 21:49 ------- (In reply to comment #9) > >I'd expect the warning to be muted in one of the calls, depending on > -f{un}signed-char. > > No, char is a seperate type from signed char and unsigned char so they are > always incompatiable when it comes to pointers to them. > > Closing as invalid.
Yes, they're incompatible -- but that's not what the warning says. I'm now using gcc 4.1.3. (Note that the warning doesn't appear without "-pedantic".) Here's the current behavior: ======================================== % cat tmp.c void foo(void) { signed char *ps = "signed?"; unsigned char *pu = "unsigned?"; } % gcc --version gcc (GCC) 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2) Copyright (C) 2006 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. % gcc -c -pedantic tmp.c tmp.c: In function `foo': tmp.c:3: warning: pointer targets in initialization differ in signedness tmp.c:4: warning: pointer targets in initialization differ in signedness ======================================== On my system plain char is signed, so for the initialization of ps, the pointer targets *don't* differ in signedness. A warning is necessary; the warning that's currently printed is incorrect. Here's what it should do: ======================================== [...] % gcc -c -pedantic -c tmp.c tmp.c: In function `foo': tmp.c:3: warning: initialization from incompatible pointer type tmp.c:4: warning: initialization from incompatible pointer type ======================================== -- kst at mib dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |REOPENED Resolution|INVALID | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23087