我试图在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*/
}
有没有人知道为什么这会给我一个错误?
答案 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
在叮当声结束时。