c function compiler-warnings

¿Por qué esta “declaración implícita de la función ''X''”?



function compiler-warnings (1)

Esta pregunta ya tiene una respuesta aquí:

Escribí un programa simple para encontrar la Suma, el promedio, el mayor y el menor número de 3 números. Permite al usuario ingresar tres números (enteros) y devolver la suma, el promedio, el máximo y el mínimo. No tiene errores sino una advertencia. Aquí está mi código fuente:

C Principal:

#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; }

Creo que no hay necesidad de hacer un archivo de encabezado porque todas las funciones son del tipo "int".

Cuando compilo esto

gcc main.c -o test

Dice

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

¿Por qué esta advertencia? No puedo encontrar ningún error en esa declaración. ¿Que es eso?


summation y sus otras funciones se definen después de que se usan en main , por lo que el compilador ha hecho una conjetura acerca de su firma; en otras palabras, se ha asumido una declaración implícita .

Debe declarar la función antes de que se use y deshacerse de la advertencia. En la especificación C99, esto es un error.

Mueva los cuerpos de funciones antes de main , o incluya firmas de métodos antes de main , por ejemplo:

#include <stdio.h> int summation(int *, int *, int *); int main() { // ...