Xcode - Warnung: Die implizite Funktionsdeklaration ist in C99 ungültig

73

Warnung erhalten: Die implizite Deklaration der Funktion 'Fibonacci' ist in C99 ungültig. Was ist los?

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

Antworten:

81

Die Funktion muss deklariert werden, bevor sie aufgerufen wird. Dies kann auf verschiedene Arten geschehen:

  • Notieren Sie den Prototyp in einem Header.
    Verwenden Sie diese Option, wenn die Funktion aus mehreren Quelldateien aufgerufen werden soll. Schreiben Sie Ihren Prototyp einfach
    int Fibonacci(int number);
    in eine .hDatei (z. B. myfunctions.h) und dann #include "myfunctions.h"in den C-Code.

  • Verschieben Sie die Funktion, bevor sie zum ersten Mal aufgerufen
    wird. Notieren Sie sich die Funktion
    int Fibonacci(int number){..}
    vor Ihrer main()Funktion

  • Deklarieren Sie die Funktion explizit, bevor sie zum ersten Mal aufgerufen wird.
    Dies ist die Kombination der oben genannten Varianten: Geben Sie den Prototyp der Funktion in die C-Datei vor Ihrer main()Funktion ein

Als zusätzliche Anmerkung: Wenn die Funktion int Fibonacci(int number)nur in der Datei verwendet werden soll, in der sie implementiert ist, muss sie deklariert werden static, damit sie nur in dieser Übersetzungseinheit sichtbar ist.

eckes
quelle
1
@Cupidvogel: Wenn Sie eine neue Frage haben, stellen Sie bitte eine neue Frage.
eckes
4
Dies sah zu geringfügig aus, um eine neue Frage zu rechtfertigen, also habe ich hier gefragt.
SexyBeast
Warum muss ich den int Fibonacci(int number);Header eingeben? Ich denke, int Fibonacci(int);sollte in Ordnung sein?
Ka-Wa Yip
@JavierVazquez, es gibt kein Objective-C auf dieser Seite.
vikingosegundo
@vikingosegundo Ich glaube, ich habe einen anderen Kommentar kommentiert, aber vielleicht wurde er gelöscht ... Also lösche ich auch meinen Kommentar;)
Javier Vazquez
26

Der Compiler möchte die Funktion kennen, bevor er sie verwenden kann

Deklarieren Sie einfach die Funktion, bevor Sie sie aufrufen

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

Ich habe die gleiche Warnung (meine App kann nicht erstellt werden). Als ich hinzufügen C functionin Objective-C's .m file, aber vergessen, erklärte sie in .hDatei.

Lee
quelle
0

sollte die Funktion richtig aufrufen; like- Fibonacci: Eingabe

QuaziRidwanHasib
quelle