96 votes

Xcode - Avertissement : La déclaration implicite d'une fonction n'est pas valide en C99

Un avertissement s'affiche : La déclaration implicite de la fonction 'Fibonacci' n'est pas valide en C99. Quel est le problème ?

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

101voto

eckes Points 17277

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

  • Écrire le prototype dans un en-tête
    Utilisez cette option si la fonction doit pouvoir être appelée depuis plusieurs fichiers sources. Il suffit d'écrire votre prototype
    int Fibonacci(int number);
    dans un .h (par exemple myfunctions.h ) et ensuite #include "myfunctions.h" dans le code C.

  • Déplacer la fonction avant qu'elle ne soit appelée la première fois.
    Cela signifie qu'il faut écrire la fonction
    int Fibonacci(int number){..}
    avant votre main() fonction

  • Déclarez explicitement la fonction avant qu'elle ne soit appelée pour la première fois.
    C'est la combinaison des saveurs précédentes : tapez le prototype de la fonction dans le fichier C avant votre main() fonction

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

29voto

vikingosegundo Points 30323

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

2voto

王传义 Points 21

En c La fonction doit être déclarée avant d'être appelée.

inclure le fichier d'en-tête

1voto

lee Points 3543

J'ai le même avertissement (c'est make my app cannot build). Lorsque j'ajoute C function en Objective-C's .m file Mais j'ai oublié de le déclarer à .h fichier.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X