On Tue, 10 Jun 2003 18:51, Sean Chittenden wrote: > > It seems to me that this is doing exactly what is claimed for > > -Wconversion. To quote from the gcc man page: > > -Wconversion > > Warn if a prototype causes a type conversion that > > is different from what would happen to the same ar- > > gument in the absence of a prototype. ... > > > > Now in the absence of a prototype for f() the argument true would be > > promoted from char/bool to int before being passed to the > > function. With the prototype in scope it is not promoted. Different > > argument widths so warning delivered. > > % cpp test.c > # 1 "test7.c" > # 1 "<built-in>" > # 1 "<command line>" > # 1 "test7.c" > # 1 "test7.h" 1 > # 13 "test7.h" > void f(char b); > # 2 "test7.c" 2 > > int > main(int argc, char *argv[]) { > f((((char)1))); > > return(0); > } > > void > f(char b) { > } > > Am I missing something that says that there isn't the prototype of the > same width? Last time I checked my vision, f(char b) was the same as > f(char b)... :-/ or am I missing something? I believe that gcc's > promoting the char to an int or to some other non-1 byte width data > type... but I'm not seeing how, where, or why. -sc
According to the man page we are comaring what does happen with the prototype in scope with what would have happened if the prototype was not there. You are aware theat the rules of C require that in the absence of a prototype actual integer calling arguments of less width than int (usually char and short) must be promoted to int before the call? Malcolm _______________________________________________ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"