#include<stdio.h>
void sum(int ,int);
int main()
{
sum(4,5,6);
return 0;
}
void sum(int a,int b)
{
printf("%d",a+b);
}
由于函数签名包含函数名称和参数,因此在上面的代码片段中,函数调用及其定义是不同的签名,并且必须是错误的。但是它只是显示警告并显示正确的输出,当我在main函数之前编写定义时,它不起作用并显示错误。为什么?预先感谢。
答案 0 :(得分:2)
您正在使用错误数量的参数调用原型函数。那是违反约束(6.5.2.2p2)的行为是不确定的。合格的编译器必须诊断出约束违例,但没有义务使编译失败。 (不过,我的gcc,clang和tcc都失败了。)
答案 1 :(得分:0)
您正在尝试使用3个参数调用方法sum
。只需要两个参数。