由于功能参数类型不匹配,我期待警告消息。但我没有得到任何警告。我甚至没有进行类型转换。我正在使用MinGW的最新版本的代码块。我在编译器设置中启用了“启用所有常见编译器警告”。我没有创建任何项目,而是直接编译单个文件。
void function1(int a, float b)
{
printf("%d",a);
printf("%f",b);
}
int main(void)
{
int a=5;
float b=12.4522;
// Do something
function1(b,a);
return(0);
}
答案 0 :(得分:0)
您不需要为算术类型之间的转换明确指定强制转换;编译器将在需要时隐式(并静默)执行它们。如果您需要针对示例中显示的案例发出警告,则需要明确启用-Wtraditional-conversion
- -Wall
和-Wextra
都不够。但请注意,-Wtraditional-conversion
不能用于C++
编译 - 仅允许C
和Objective-C
。
进一步注意,在编译示例时,我还指定了-pedantic
,这会导致编译器发出关于您(错误)使用C++
样式注释的警告。