Xcode – Advertencia: la declaración implícita de función no es válida en C99

2 minutos de lectura

avatar de usuario
CodificaciónUpStream

Recibiendo una advertencia: la declaración implícita de la función ‘Fibonacci’ no es válida en C99. ¿Qué ocurre?

#include <stdio.h>

int main(int argc, const char * argv[])
{
    int input;
    printf("Please give me a number : ");
    scanf("%d", &input);
    getchar();
    printf("The fibonacci number of %d is : %d", input, Fibonacci(input)); //!!!

}/* main */

int Fibonacci(int number)
{
    if(number<=1){
        return number;
    }else{
        int F = 0;
        int VV = 0;
        int V = 1;
        for (int I=2; I<=getal; I++) {
            F = VV+V;
            VV = V;
            V = F;
        }
        return F;
    }
}/*Fibonacci*/

La función tiene que ser declarada antes de ser llamada. Esto podría hacerse de varias maneras:

  • Anota el prototipo en un encabezado.
    Use esto si la función se puede llamar desde varios archivos fuente. Solo escribe tu prototipo
    int Fibonacci(int number);

    abajo en un .h archivo (por ejemplo myfunctions.h) y luego #include "myfunctions.h" en el código C.

  • Mueva la función antes de que se llame por primera vez
    Esto significa, escribir la función
    int Fibonacci(int number){..}

    antes de su main() función

  • Declare explícitamente la función antes de que se llame por primera vez
    Esta es la combinación de los sabores anteriores: escriba el prototipo de la función en el archivo C antes de su main() función

Como nota adicional: si la función int Fibonacci(int number) sólo se utilizará en el fichero donde se implemente, se declarará staticpara que solo sea visible en esa unidad de traducción.

  • @Cupidvogel: si tiene una nueva pregunta, haga una nueva pregunta, por favor.

    – eckes

    2 de junio de 2014 a las 8:27

  • Esto parecía demasiado menor para justificar una nueva pregunta, así que pregunté aquí.

    – Bestia Sexy

    2 de junio de 2014 a las 11:39

  • porque tengo que escribir int Fibonacci(int number); en el encabezado? creo int Fibonacci(int); ¿debería estar bien?

    – Ka-Wa Yip

    22 de marzo de 2017 a las 18:57


  • @JavierVazquez, no hay Objective-C en esta página.

    – vikingosegundo

    27 oct 2020 a las 13:59

  • @vikingosegundo Creo que comenté sobre otro comentario pero tal vez fue borrado… Así que borro mi comentario también 😉

    – javi_swift

    28 de octubre de 2020 a las 10:47

avatar de usuario
vikingosegundo

El compilador quiere conocer la función antes de poder usarla.

simplemente declare la función antes de llamarla

#include <stdio.h>

int Fibonacci(int number); //now the compiler knows, what the signature looks like. this is all it needs for now

int main(int argc, const char * argv[])
{
    int input;
    printf("Please give me a number : ");
    scanf("%d", &input);
    getchar();
    printf("The fibonacci number of %d is : %d", input, Fibonacci(input)); //!!!

}/* main */

int Fibonacci(int number)
{
//…

Tengo la misma advertencia (hace que mi aplicación no se pueda compilar). cuando agrego C function en Objective-C's .m filePero se olvidó de declararlo en .h expediente.

en c La función tiene que ser declarada antes de ser llamada

incluir archivo principal

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad