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

Lesezeit: 2 Minuten

Benutzeravatar von CodingUpStream
CodingUpStream

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

Die Funktion muss deklariert werden, bevor sie aufgerufen wird. Dies könnte auf verschiedene Weise geschehen:

  • Notieren Sie den Prototyp in einer Überschrift
    Verwenden Sie dies, wenn die Funktion aus mehreren Quelldateien aufrufbar sein soll. Schreiben Sie einfach Ihren Prototypen
    int Fibonacci(int number);

    unten in a .h Datei (zB myfunctions.h) und dann #include "myfunctions.h" im C-Code.

  • Verschieben Sie die Funktion, bevor sie das erste Mal aufgerufen wird
    Das heißt, schreiben Sie die Funktion auf
    int Fibonacci(int number){..}

    vor deinem main() Funktion

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

Als zusätzlicher Hinweis: Wenn die Funktion int Fibonacci(int number) darf in der Datei nur dort verwendet werden, wo es implementiert ist, es muss deklariert werden staticsodass es nur in dieser Übersetzungseinheit sichtbar ist.

  • warum muss ich tippen int Fibonacci(int number); in der Kopfzeile? Ich denke int Fibonacci(int); sollte gut sein?

    – Ka-Wa Yip

    22. März 2017 um 18:57 Uhr


Benutzeravatar von vikingosegundo
vikingosegundo

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

in c Die Funktion muss deklariert werden, bevor sie aufgerufen wird

Kopfdatei einschließen

Ich habe die gleiche Warnung (meine App kann nicht erstellt werden). Wenn ich hinzufüge C function in Objective-C's .m fileAber vergessen, es zu deklarieren .h Datei.

1420880cookie-checkXcode – Warnung: Die implizite Funktionsdeklaration ist in C99 ungültig

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy