cs50函数 'get_int'的隐式声明在mario的C99中无效

标签 c cs50

我从cs50 2018开始做马里奥问题集,只写了第一部分来从用户那里获取整数。这是我到目前为止所拥有的:

#include <stdio.h>
#include <cs50.h>

int main(void)
{
int n;

do {
    n = get_int("Number of rows: ");
}
    while (n < 0 || n > 23);
}

生成的错误是这样的:

mario.c:9:9: error: implicit declaration of function 'get_int' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
    n = get_int("Number of rows: ");
        ^
1 error generated.

我的理解是,这个错误通常意味着您没有包含该函数的正确库,但我已经包含了 CS50 库。有人可以帮忙吗?

注意我的工作区已有几年历史,我相信 CS50 库此时已更新。这是导致问题的原因吗?我无法创建新的哈佛 CS50 工作区,因为我已经有一个现有工作区,而且我不是高级成员(member)。

谢谢, 丹

最佳答案

确保您使用的是最新版本的 cs50.h。一年前(或两三年)进行了一次修订,添加了 get_int(),并弃用了之前使用过的 GetInt()。由于您包含 cs50.h header 但未获取声明,因此该 header 在某种意义上是不完整的。如果它是空的,那就有问题了;如果是旧版本,那就有问题了;否则,目前还不清楚问题出在哪里。您也许可以使用 grep get_int/usr/local/include/cs50.h (对于安装 cs50.h 的目录)。 – 乔纳森·莱夫勒 12 小时前

关于cs50函数 'get_int'的隐式声明在mario的C99中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48391118/

相关文章:

c - 我无法找出计算排列的程序中的错误

数据结构实现可以知道它是否在堆上吗?

c - 为什么即使值为真,我的 while 循环也会继续执行?

c - 为什么我可以单独打印每个字符,但不能整体打印?

c - 以下冒泡排序在 C 中不起作用

objective-c - 如何散列目录的(可能是递归的)内容

c++ - 访问违规写入位置,在我的循环中

c++ - 在 iOS 上使用 C++ 代码,创建静态库或与 Objective C 混合使用?

c - 在 C 中创建获取字符串函数时遇到问题

c - 如何避免 get_string 错误?