So I split off this discussion from the other thread as it really wasn't related to the original topic.
So I understand how floats are promoted to doubles on variadic functions like printf() but what I still don't understand is why the compiler barfs when percent f is used and a float is passed down.
If it is being promoted to double, then why should the compiler barf on the float argument as the printf() function will in fact be receiving a double?
It doesn't do this with gcc on the PC and on the PC floats and doubles are not even the same size.
(I'll admit my gcc command options are not the same for the two environments)
So I come back to my original question of why should you have to cast a float to a double when using printf() and percent f with avr-gcc but not with the PC version of gcc?
Why can't the avr-gcc compiler be smart enough to know that the float will be promoted to a double and everything is ok instead of requiring an explicit cast?