2015-09-27 72 views
0

由于函数参数中的类型不匹配,我期待警告消息。但我没有得到任何警告。我甚至没有类型化。我正在使用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

您不需要为算术类型之间的转换显式指定转换;编译器会在需要时隐式执行它们(并以静默方式)。如果您希望针对您在示例中显示的案例发出警告,则需要明确启用-Wtraditional-conversion - 既不是-Wall也不是-Wextra就足够了。但请注意,-Wtraditional-conversion不能用于编译C++ - 允许使用CObjective-C只有

此外请注意,编译您的示例时,我还指定-pedantic,这会导致编译器发出有关您的(错误)使用C++样式注释的警告。