On Tue, 10 Jun 2003 08:33, Sean Chittenden wrote: > [ Please CC: me on replies, not on questions@ ] > > Is this a GCC bug with the -Wconversion flag or am I doing something > wrong? I know it's just a warning, but it's irritating me more than > that dumb Dan Quayle quote, "if it weren't for that horse, I wouldn't > have spent an extra year in college..." -sc > > % gcc -v > Using built-in specs. > Configured with: FreeBSD/i386 system compiler > Thread model: posix > gcc version 3.2.2 [FreeBSD] 20030205 (release) > % uname -a > FreeBSD hostname.example.com 5.1-CURRENT FreeBSD 5.1-CURRENT #2: Mon Jun 9 > 12:23:34 PDT 2003 > [EMAIL PROTECTED]:/usr/src/sys/i386/compile/HOSTNAME i386 > > > % gcc -Wconversion test.c > test.c: In function `main': > test.c:5: warning: passing arg 1 of `f' with different width due to > prototype > > /* Begin test.h */ > #ifndef __TEST_H__ > #define __TEST_H__ > > #ifndef bool > typedef char bool; > #endif > > #ifndef true > #define true ((bool)1) > #endif > > #ifndef false > #define false ((bool)0) > #endif > > void f(bool b); > #endif > /* End test.h */ > > > /* Begin test.c */ > #include "test.h" > > int > main(void) { > f(true); > return(0); > } > > void > f(bool b) { } > /* End test.c */
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. Malcolm _______________________________________________ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"