Shouldn't the compiler behave in the following way, concerning the signedness of pointer arguments?
void f (long *l, signed long *sl, unsigned long *ul); // - Make NO assumptions about the signedness of *l and accept long, // slong and ulong without a warning // - treat *sl as signed long and produce a warning if given a long // or unsigned long // - treat *ul as unsigned long and produce a warning if given a // long or signed long long *l; singend long *sl; unsigned long *ul; f ( l, sl, ul); // No Warning f (sl, sl, ul); // No Warning f (ul, sl, ul); // No Warning f ( l, l, ul); // Warning on second argument f ( l, ul, ul); // Warning on second argument f ( l, sl, l); // Warning on third argument f ( l, sl, sl); // Warning on third argument Best regards RĂ¼diger > Code such as: > > void f(long *, unsigned long *); > > int main() > { > long *scp; > unsigned long *ucp; > > ucp = scp; > scp = ucp; > f(ucp, scp); > } > > is in violation of of the C standard. We silently accept such code, > unless -pedantic (or better) is given. I didn't happen to see this > listed in extentions.texi. > > This was put in: > > revision 1.91 > date: 1993/05/27 04:30:54; author: rms; state: Exp; lines: +6 -7 > (convert_for_assignment): When allowing mixing of > signed and unsigned pointers, compare unsigned types not type sizes. > > in c-typeck.c, and before that (going back to 1.1), we always gave at > least a warning. In C++, we give the warning. Other compilers give > hard errors for these things. > > I propose to tighten this up to a warning, unconditionally. How to > others feel? -Wall? -std=? Over my dead body? > > Apple Radar 2535328. > > > 2003-10-06 Mike Stump <[EMAIL PROTECTED]> > > * c-typeck.c (convert_for_assignment): Tighted up pointer converstions > that differ in signedness. >