c - 这段代码的 sublime text 2 有什么问题?

标签 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代码可以被在线测试平台接受。谁能帮我解决这个问题? 我现在很困惑。

最佳答案

您必须声明您的函数的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/

相关文章:

c - 为什么我的 fputc/fwrite 一直以十六进制打印以及如何打印到文件的中间?

将dll文件转换为源代码

c - x264 配置链接和构建问题

c - 如何检查用户没有在C中输入小数

c - 致命信号 11 退出状态

c - 并行排序两个数组

c - 操作系统 C 中未执行的 for 循环

c - 什么是 C 中的未定义行为?

python - 从 C 扩展代码中释放 python 列表

c - 如何使用指针删除字符串中的元音