web-dev-qa-db-fra.com

Xcode - Avertissement: la déclaration implicite de fonction n'est pas valide dans C99

Obtenir un avertissement: La déclaration implicite de la fonction 'Fibonacci' est invalide dans C99. Qu'est-ce qui ne va pas?

#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*/
67
CodingUpStream

La fonction doit être déclarée avant d'être appelée. Cela pourrait être fait de différentes manières:

  • Notez le prototype dans un en-tête
    Utilisez cette option si la fonction doit pouvoir être appelée à partir de plusieurs fichiers source. Il suffit d'écrire votre prototype
    int Fibonacci(int number);
    dans un fichier .h (par exemple myfunctions.h), puis #include "myfunctions.h" dans le code C.

  • Déplace la fonction avant qu'elle ne soit appelée pour la première fois
    Cela signifie, écrivez la fonction
    int Fibonacci(int number){..}
    avant votre fonction main()

  • Déclarez explicitement la fonction avant qu'elle ne soit appelée pour la première fois
    C’est la combinaison des variantes ci-dessus: tapez le prototype de la fonction dans le fichier C avant votre fonction main()

Remarque supplémentaire: si la fonction int Fibonacci(int number) doit uniquement être utilisée dans le fichier où elle est implémentée, elle doit être déclarée static, de sorte qu'elle ne soit visible que dans cette unité de traduction.

73
eckes

Le compilateur veut connaître la fonction avant de pouvoir l'utiliser

il suffit de déclarer la fonction avant de l'appeler

#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)
{
//…
24
vikingosegundo

J'ai le même avertissement (mon application ne peut pas être construite). Quand j'ajoute C function dans Objective-C's .m file, mais j'ai oublié de le déclarer dans le fichier .h.

0
lee

devrait appeler la fonction correctement; comme- Fibonacci: entrée

0