-2

我正在尝试用 C 编写这个简单的练习代码。它要求用户给出一个正数,检查它是否为正数,然后只返回正数。

我收到此错误:

positive.c:28:7: warning: implicit declaration of function 'GetInt' is invalid
  in C99 [-Wimplicit-function-declaration]
            n = GetInt();

我会认为这意味着我没有声明我的一个函数或者我没有调用某个库。据我所知,这一切都是我做的。这是我的代码:

#include <stdio.h>

int GetPositiveInt(void);

int main(void)
{
    int n = GetPositiveInt();
    printf("Thanks for the %i\n", n);
}


/*This all gets called into the above bit*/
int GetPositiveInt(void)
{
    int n; /*declare the variable*/
    do
    {
        printf("Give me a positive integer: ");
        n = GetInt();
    }
    while (n <= 0);
    return n; /*return variable to above*/
}

有没有人知道为什么这会给我一个错误?

4

4 回答 4

2

那是因为此函数GetInt不存在,或者您忘记包含正确的标题。

您可以通过以下方式替换对函数的调用GetInt

scanf("%d", &n);
于 2013-10-10T06:18:15.793 回答
1

你还没有声明GetInt()。编译器不知道它返回什么以及它接收到什么参数。C99 中禁止隐式声明(之前有效 - 只有在启用 C89 时才会产生警告)。

当然,如果你只有声明而没有实现——你会在链接阶段得到一个错误。

于 2013-10-10T06:20:28.960 回答
1

为 CS50 edX 类创建了一个库,您需要将其包含在 .c 文件的顶部。否则编译器不知道 GetInt() 函数。

#include <cs50.h>
于 2014-07-23T20:16:54.220 回答
0

为我工作:您可以get_int();在 CS50 IDE 中使用并使用make或简单地放在-lcs50clang 的末尾进行编译。

于 2019-08-09T02:32:39.170 回答