91

收到警告:函数 'Fibonacci' 的隐式声明在 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

4 回答 4

96

该函数必须在被调用之前声明。这可以通过多种方式完成:

  • 在头文件中写下原型
    如果该函数可以从多个源文件中调用,则使用它。只需将您的原型写
    int Fibonacci(int number);
    在一个.h文件中(例如myfunctions.h),然后#include "myfunctions.h"在 C 代码中。

  • 在第一次调用之前移动函数这意味着, 在你的函数之前
    写下函数
    int Fibonacci(int number){..}
    main()

  • 在第一次调用之前显式声明函数
    这是上述风格的组合:在函数之前在 C 文件中键入函数的main()原型

作为附加说明:如果该函数int Fibonacci(int number)应仅在实现它的文件中使用,则应声明它static,以便它仅在该翻译单元中可见。

于 2013-04-06T11:31:28.600 回答
29

编译器想知道函数才能使用它

只需在调用函数之前声明它

#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)
{
//…
于 2013-04-06T11:01:19.173 回答
1

我有同样的警告(它使我的应用程序无法构建)。当我添加C functionObjective-C's .m file,但忘记在.h文件中声明它。

于 2016-11-30T10:20:55.197 回答
1

在 c 函数必须在被调用之前声明

包含头文件

于 2021-10-31T04:10:44.667 回答