获得警告:C99中函数'Fibonacci'的隐式声明无效。 怎么了?
#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*/
答案 0 :(得分:71)
该函数必须在被调用之前声明。这可以通过各种方式完成:
在标题中写下原型
如果函数可以从多个源文件中调用,请使用此选项。只需写下你的原型
int Fibonacci(int number);
在.h
文件中(例如myfunctions.h
)然后在C代码中#include "myfunctions.h"
。
在第一次调用函数之前移动函数
这意味着,记下功能
int Fibonacci(int number){..}
在main()
功能
在第一次调用函数之前显式声明该函数
这是上述风格的组合:在main()
函数之前在C文件中键入函数的原型
作为补充说明:如果函数int Fibonacci(int number)
仅在其实现的文件中使用,则应将其声明为static
,以便它仅在该翻译单元中可见。
答案 1 :(得分:23)
编译器想要在使用它之前知道该函数
在调用之前声明函数
#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)
{
//…
答案 2 :(得分:0)
我有同样的警告(它使我的应用程序无法构建)。当我在C function
中添加Objective-C's .m file
时,却忘了在.h
文件中声明它。
答案 3 :(得分:0)
应该正确调用该函数;喜欢 - 斐波纳契:输入