使用不同数量的参数进行函数调用和定义

时间:2018-07-14 20:17:05

标签: c function

#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函数之前编写定义时,它不起作用并显示错误。为什么?预先感谢。

2 个答案:

答案 0 :(得分:2)

您正在使用错误数量的参数调用原型函数。那是违反约束(6.5.2.2p2)的行为是不确定的。合格的编译器必须诊断出约束违例,但没有义务使编译失败。 (不过,我的gcc,clang和tcc都失败了。)

答案 1 :(得分:0)

您正在尝试使用3个参数调用方法sum。只需要两个参数。