这段代码的sublime text 2出了什么问题?

时间:2014-11-29 15:59:24

标签: c

我在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代码可以被在线测试平台接受。任何人都可以帮我解决这个问题吗? 我现在很困惑。

1 个答案:

答案 0 :(得分:2)

你必须declare你的功能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;
}

或者你在function prototype

之前制作了main这样的内容
#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);
}

(我更喜欢带有原型的variante,这样你的main总是位于文件的顶部,你可以看到原型该文件包含哪个函数!)