Een waarschuwing krijgen: Impliciete declaratie van functie ‘Fibonacci’ is ongeldig in C99.
Wat is er aan de hand?
#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*/
Antwoord 1, autoriteit 100%
De functie moet worden gedeclareerd voordat deze wordt aangeroepen. Dit kan op verschillende manieren:
-
Schrijf het prototype op in een kop
Gebruik dit als de functie kan worden aangeroepen vanuit verschillende bronbestanden. Schrijf gewoon uw prototype
int Fibonacci(int number);
in een.h
-bestand (bijv.myfunctions.h
) en vervolgens#include "myfunctions.h"
in de C-code. -
Verplaats de functie voordat deze de eerste keer wordt aangeroepen
Dit betekent, noteer de functie
int Fibonacci(int number){..}
vóór uwmain()
-functie -
Declareer de functie expliciet voordat deze de eerste keer wordt aangeroepen
Dit is de combinatie van de bovenstaande smaken: typ het prototype van de functie in het C-bestand voor jemain()
-functie
Als aanvullende opmerking: als de functie int Fibonacci(int number)
alleen wordt gebruikt in het bestand waarin het is geïmplementeerd, moet het als static
worden verklaard, zodat het is alleen zichtbaar in die vertaaleenheid.
Antwoord 2, autoriteit 32%
De compiler wil de functie weten voordat hij deze kan gebruiken
declareer gewoon de functie voordat je hem aanroept
#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)
{
//…
Antwoord 3
Ik heb dezelfde waarschuwing (het is dat mijn app niet kan worden gebouwd). Wanneer ik C function
toevoeg in Objective-C's .m file
, maar vergat dit te declareren bij .h
-bestand.