简单的C程序返回太多参数错误

时间:2015-06-11 13:23:37

标签: c sdcc

所以我刚开始学习C,在用SmallDevice C编译器设置CodeBlocks后,我开始研究我正在学习的书中的一些程序。它不断返回此错误。这是代码:

#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);
}

它给我的错误是

Warning 112: Function 'scanf' implicit declaration
error 101: too many parameters

我去了,发现写了一个完全相同的文本(这给了我完全相同的代码),当我把它放在里面时仍然给我这个错误。这是我的编译器的问题吗?

3 个答案:

答案 0 :(得分:2)

是的,您的编译器或/和您的安装存在问题。代码没有语法错误。

gsamaras@pythagoras:~$ pico Justc25_main.c
gsamaras@pythagoras:~$ gcc Justc25_main.c
gsamaras@pythagoras:~$ 

正如Werner Henze所说:&#34;看起来Small Device C编译器适用于小型嵌入式设备,并且没有scanf功能。&#34;。

答案 1 :(得分:2)

不,这对您的编译器来说不是问题。

Warning 112: Function 'scanf' implicit declaration

这意味着scanf的原型在普通位置无法使用:stdio.h。由于编译器无法找到原型,因此会使用默认参数创建一个原型并发出警告。虽然它是一个警告而不是错误,但当链接时,这仍然可能最终失败。

最可能的原因是其标准库不包含scanf

答案 2 :(得分:0)

@jongware是对的。 SDCC没有scanf实现,这就是您的警告112和后续错误101的原因。您可以通过在stdio.h头文件和完整源代码中查找scanf来自行检查。

基本上,SDCC开发人员希望他们的编译器与平台无关,并且为嵌入式设备实现scanf需要有关每个平台的硬件特定知识。例如,用于Amstrad CPC的scanf实现与MSX的实现不同,即使具有相同的Z80处理器。

根据您所定位的平台,您可能会发现scanf实现可用。其他选择是为您的平台实现getchar,然后使用gets。