简单C程序返回太多参数错误
所以我刚刚开始学习C,在使用SmallDevice C编译器设置代码块之后,我开始学习本书中的一些程序。它不断返回这个错误。代码如下:简单C程序返回太多参数错误,c,sdcc,C,Sdcc,所以我刚刚开始学习C,在使用SmallDevice C编译器设置代码块之后,我开始学习本书中的一些程序。它不断返回这个错误。代码如下: #include <stdio.h> int main() { int num1, num2, sum; printf("Enter two integers: \n"); scanf("%d %d",&num1,&num2); sum=num1+num2; printf("Sum: %d",s
#include <stdio.h>
int main()
{
int num1, num2, sum;
printf("Enter two integers: \n");
scanf("%d %d",&num1,&num2);
sum=num1+num2;
printf("Sum: %d",sum);
return(0);
}
我去发现了一个写的完全相同的文本(它给了我完全相同的代码),当我把它放在它仍然给我这个错误。这是我的编译器的问题吗?是的,是编译器或/和安装的问题。代码没有语法错误
gsamaras@pythagoras:~$ pico Justc25_main.c
gsamaras@pythagoras:~$ gcc Justc25_main.c
gsamaras@pythagoras:~$
正如Werner Henze所说:“看起来Small Device C编译器适用于小型嵌入式设备,不附带scanf函数。”不,这不是编译器的问题
Warning 112: Function 'scanf' implicit declaration
这意味着scanf
的原型在其正常位置不可用:stdio.h
。由于编译器找不到原型,因此会创建一个带有默认参数的原型并发出警告。虽然这是一个警告,而不是一个错误,但在链接时,这仍然可能最终失败
最可能的原因是它的标准库不包含scanf@jongware是正确的。SDCC没有scanf实现,这就是警告112和后续错误101的原因。您可以通过在stdio.h头和完整的源代码中查找scanf来检查这一点 基本上,SDCC开发人员希望他们的编译器独立于平台,并且为嵌入式设备实现scanf需要关于每个平台的硬件特定知识。例如,scanf对Amstrad CPC的实现与MSX的实现不同,即使两者都有相同的Z80处理器
根据所针对的平台,您可能会发现scanf实现可用。另一种选择是为您的平台实现getchar,然后使用gets。您使用的是哪种编译器。小型设备C编译器看起来像是针对小型嵌入式设备的编译器,并且没有scanf函数。是的,现在我研究它,这是有意义的。我刚选了第一个被推荐的。这些错误是否与行号有关?我知道为什么它可能会发出
112
,但是101
很奇怪。离题:你的顶级答案很好,我会把它链接到我的顶级问题。谢谢。你是说scanf
?这不是编译器的问题。SDCC编译器是为一系列嵌入式设备设计的,实现标准输入的scanf依赖于硬件。SDCC开发人员希望保持其编译器独立于硬件,因此不存在scanf。@罗纳尔多输入依赖于硬件,但输出独立于硬件?!是的,是的,波卢克斯。不同的硬件平台有不同的方式输出到他们的屏幕上(如果他们甚至有一个屏幕的话)@Polluks抱歉的人,没有捕捉到它。我没想到你的问题是修辞性的。我不是母语:)但printf也依赖于平台!嗯,是和否。printf本身通常是独立于平台的,但依赖于putchar/putc,必须为您的平台实现。然而,在许多平台上实现putchar/putc通常是直接的,getchar/getc也是如此。
Warning 112: Function 'scanf' implicit declaration