Xcode - Предупреждение: неявное объявление функции недействительно в C99
Получение предупреждения: неявное объявление функции "Фибоначчи" недействительно на C99.
Что не так?
#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*/
Ответы
Ответ 1
Функция должна быть объявлена до ее вызова. Это можно сделать разными способами:
-
Запишите прототип в заголовке
Используйте это, если функция должна быть вызвана из нескольких исходных файлов. Просто напишите свой прототип
int Fibonacci(int number);
вниз в файле .h
(например, myfunctions.h
), а затем #include "myfunctions.h"
в коде C.
-
Переместите функцию до того, как она будет вызвана в первый раз
Это означает, что запись функции
int Fibonacci(int number){..}
перед вашей функцией main()
-
Явно объявить функцию до того, как она будет вызвана в первый раз
Это сочетание вышеуказанных вкусов: введите прототип функции в файле C перед вашей функцией main()
В качестве дополнительной заметки: если функция int Fibonacci(int number)
должна использоваться только в файле, где она была реализована, она должна быть объявлена static
, так что она будет видна только в этой единицы перевода.
Ответ 2
Компилятор хочет знать функцию до ее использования
просто объявите функцию перед ее вызовом
#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)
{
//…
Ответ 3
У меня такое же предупреждение (это делает мое приложение не может построить). Когда я добавляю C function
в Objective-C .m file
, но забыл объявить его в .h
файле.
Ответ 4
должен правильно вызвать функцию; like-Fibonacci: ввод