Xcode - 警告:隐式函数声明在C99中无效

Xcode - 警告:隐式函数声明在C99中无效

问题描述:

获取警告:函数'Fibonacci'的隐式声明在C99中无效。 有什么问题?Xcode - 警告:隐式函数声明在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*/ 

功能都将被声明它变得调用之前。这可以通过各种方式来完成:

  • 写下原型在头
    使用这个命令的作用,是从几个源文件调用。只需在C代码中写下您的原型
    int Fibonacci(int number);
    向下.h文件(例如myfunctions.h),然后#include "myfunctions.h"

  • 移动功能,它越来越被称为第一次
    这意味着前,写下功能
    int Fibonacci(int number){..}
    main()功能之前

  • 显式声明函数它越来越被称为第一次
    前 这是上述风味的组合:在C文件中输入函数原型之前,你的main()函数

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

+1

@Cupidvogel:如果您有新问题,请提出新问题。 – eckes 2014-06-02 08:27:54

+4

这看起来太小了,不能提出一个新的问题,所以我在这里问。 – SexyBeast 2014-06-02 11:39:36

+0

为什么我必须在头中输入'int Fibonacci(int number);'?我认为'int斐波那契(int);'应该没问题? – kyle 2017-03-22 18:57:42

编译器想知道功能才可以使用它

只是声明函数调用之前

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

很多thx!有一些C#的经验,它并不完全相同。 – CodingUpStream 2013-04-06 11:21:14

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

应该正确调用该功能; like-Fibonacci:input