我在 sublime text 2 中写了这段 C 代码
#include <stdio.h>
int main()
{
int n, m;
scanf("%d", &n);
m = fib(n);
printf("%d", m);
return 0;
}
int fib(int n)
{
if(n == 0)
return 0;
else if( n == 1)
return 1;
else
return fib(n - 1) + fib( n - 2);
}
但是当我构建它时,控制台出现以下错误:
/home/shieh/program.c: In function ‘int main()’:
/home/shieh/program.c:6:14: error: ‘fib’ was not declared in this scope
m = fib(n);
^
[Finished in 0.0s with exit code 1]
但是,这个c代码可以被在线测试平台接受。谁能帮我解决这个问题? 我现在很困惑。
最佳答案
您必须声明
您的函数的before
您调用它!否则 main
中的函数调用无法完成,因为在 compilation time
函数是未知的!(编译器从上到下!)所以试试这个:
#include <stdio.h>
int fib(int n) {
if(n == 0)
return 0;
else if( n == 1)
return 1;
else
return fib(n - 1) + fib( n - 2);
}
int main() {
int n, m;
scanf("%d", &n);
m = fib(n);
printf("%d", m);
return 0;
}
或者你在 main
之前制作一个像这样的函数原型(prototype)
:
#include <stdio.h>
int fib(int n);
int main() {
int n, m;
scanf("%d", &n);
m = fib(n);
printf("%d", m);
return 0;
}
int fib(int n) {
if(n == 0)
return 0;
else if( n == 1)
return 1;
else
return fib(n - 1) + fib( n - 2);
}
(我更喜欢带有原型(prototype)的 variante,这样你的 main 总是在你的文件的顶部,你可以看到这个文件包含哪个函数的原型(prototype)!)
关于c - 这段代码的 sublime text 2 有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27204141/