В 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*/
4 57

4 ответа:

функция должна быть объявлена до ее вызова. Это может быть сделано различными способами:

  • запишите прототип в заголовочном файле
    Используйте это, если функция должна вызываться из нескольких исходных файлов. Просто напишите свой прототип
    int Fibonacci(int number);
    в (например,myfunctions.h) и нажмите #include "myfunctions.h" В C код.

  • переместите функцию, прежде чем она будет вызвана в первый раз
    Этот значит, запишите функцию
    int Fibonacci(int number){..}
    перед вашим main() функции

  • явное объявление функции перед ее вызовом в первый раз
    Это сочетание вышеперечисленных вкусов: введите прототип функции в файл C перед вашим main() функции

в качестве дополнительного Примечания: если функция int Fibonacci(int number) должен использоваться только в файле, где он реализован, он должен быть объявлен static, так что это видно только в том, что единица перевода.

компилятор хочет знать функцию, прежде чем он сможет ее использовать

просто объявите функцию перед ее вызовом

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

у меня есть то же самое предупреждение (это сделать мое приложение не может построить). Когда я добавляю C function на Objective-C's .m file, но забыл объявить его в .

должен вызвать функцию правильно; как-Фибоначчи: вход