Xcode – 警告:隐式的函数声明在C99中是无效的

获得警告:函数'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*/ 

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

  • 在标题中写下原型
    如果函数可以从多个源文件中调用,则使用这个函数。 只要写你的原型
    int Fibonacci(int number);
    放在.h文件(例如myfunctions.h )中,然后在C代码中包含#include "myfunctions.h"

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

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

另外需要注意的是:如果函数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) { //… 

我有相同的警告(这是使我的应用程序无法构build)。 当我在Objective-C's .m file添加C function时,却忘记在.h文件中声明它。

应该正确地调用函数; 像斐波那契:input