gcc me harder: -Wconversion bug?
Sean Chittenden
sean at chittenden.org
Tue Jun 10 02:21:31 PDT 2003
> 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
--
Sean Chittenden
More information about the freebsd-questions
mailing list