函数'GetInt'的隐式声明在C99中无效

时间:2013-10-10 06:15:38

标签: c

我试图在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 个答案:

答案 0 :(得分:2)

这是因为此功能GetInt不存在或您忘记包含正确的标题。

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

scanf("%d", &n);

答案 1 :(得分:1)

您尚未声明GetInt()。编译器不知道它返回什么以及它接收的参数。在C99中禁止隐式声明(之前有效 - 如果您启用C89,则只会产生警告)。

当然,如果你只有声明而没有实现 - 你会在链接阶段出错。

答案 2 :(得分:0)

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

#include <cs50.h>

答案 3 :(得分:0)

为我工作: 您可以在CS50 IDE中使用get_int();并使用make进行编译,也可以简单地放入-lcs50在叮当声结束时。