为什么这个“功能‘X’的隐式声明”? [重复](Why this “Implicit decla

2019-06-27 09:46发布

这个问题已经在这里有一个答案:

  • 警告:函数隐式声明 6回答

我写了一个简单的程序来找到总和,平均,最大和最小的3个数字的号码。 它可以让用户输入的三(整数)的数字,并返回总和,平均值,最大值和最小值。 它没有错误,但警告。 下面是我的源代码:

main.c中:

#include <stdio.h>

int main()
{
    int num1, num2, num3, sum, max, min, avg;

    printf("Enter Three \"Integer\" Numbers:");

    scanf("%i%i%i", &num1, &num2, &num3);

    sum = summation(&num1, &num2, &num3);
    avg = average(&sum);
    max = max_val(&num1, &num2, &num3);
    min = min_val(&num1, &num2, &num3);

    printf("Sum: %i Avg: %i MAX: %i MIN: %i", sum, avg, max, min);

    return 0;
}

int summation(int *n1, int *n2, int *n3)
{
    int s;
    s = *n1 + *n2 + *n3;

    return s;
}

int average(int *s)
{
    int a;
    a = *s / 3;

    return a;
}

int max_val(int *n1, int *n2, int *n3)
{
    int MAX;

    if (*n1 > *n2) MAX = *n1;
    else if (*n2 > *n3) MAX = *n2;
    else MAX = *n3;

    return MAX;
}

int min_val(int *n1, int *n2, int *n3)
{
    int MIN;

    if (*n1 < *n2) MIN = *n1;
    else if (*n2 < *n3) MIN = *n2;
    else MIN = *n3;

    return MIN;
}

我觉得没有必要做一个头文件,因为所有的功能都在类型为“INT”。

当我编译这个

gcc main.c -o test

它说

main.c: In function 'main':
main.c:34:5: warning: implicit declaration of function 'summation' [-Wimplicit-function-declaration]

为什么这样的警告? 我无法找到该声明的任何错误。 那是什么?

Answer 1:

summation和您的其他功能,他们在使用定义main ,所以编译器做了一个关于它的签名猜测; 换句话说,已经假定一个隐含的声明

它的使用,摆脱了警告之前,您应该声明的功能。 在C99说明书中,这是一个错误。

之前移动的函数体main ,或者包括之前的方法签名main ,如:

#include <stdio.h>

int summation(int *, int *, int *);

int main()
{
    // ...


文章来源: Why this “Implicit declaration of function 'X'”? [duplicate]