简单的 C 程序 returns 太多参数错误
Simple C programs returns too many parameters error
所以我刚刚开始学习 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
我去找了一篇完全相同的文字(它给了我完全相同的代码),当我把它放进去时仍然给我这个错误。这是我的编译器的问题吗?
是的,这是您的编译器问题 or/and 您的安装。代码没有语法错误。
gsamaras@pythagoras:~$ pico Justc25_main.c
gsamaras@pythagoras:~$ gcc Justc25_main.c
gsamaras@pythagoras:~$
正如 Werner Henze 所说:"It looks like Small Device C compiler is for small embedded devices and does not come with scanf function."。
不,这不是你编译器的问题。
Warning 112: Function 'scanf' implicit declaration
这意味着 scanf
的原型在其 正常 位置不可用:stdio.h
。由于编译器找不到原型,它会创建一个带有默认参数的原型并发出警告。虽然这是一个警告而不是错误,但是当 linking.
时,这仍然可能最终失败
最有可能的原因是它的标准库没有包含scanf
.
@jongware 说的对。 SDCC 没有 scanf 实现,这就是警告 112 和后续错误 101 的原因。您可以通过在 stdio.h header 和完整源代码中查找 scanf 来自行检查。
基本上,SDCC 开发人员希望他们的编译器独立于平台,并且为嵌入式设备实现 scanf 需要有关每个平台的硬件特定知识。例如,scanf 对 Amstrad CPC 的实现与对 MSX 的实现不同,即使两者具有相同的 Z80 处理器。
根据您的目标平台,您可能会发现可用的 scanf 实现。其他选择是为您的平台实现 getchar,然后使用 gets。
所以我刚刚开始学习 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
我去找了一篇完全相同的文字(它给了我完全相同的代码),当我把它放进去时仍然给我这个错误。这是我的编译器的问题吗?
是的,这是您的编译器问题 or/and 您的安装。代码没有语法错误。
gsamaras@pythagoras:~$ pico Justc25_main.c
gsamaras@pythagoras:~$ gcc Justc25_main.c
gsamaras@pythagoras:~$
正如 Werner Henze 所说:"It looks like Small Device C compiler is for small embedded devices and does not come with scanf function."。
不,这不是你编译器的问题。
Warning 112: Function 'scanf' implicit declaration
这意味着 scanf
的原型在其 正常 位置不可用:stdio.h
。由于编译器找不到原型,它会创建一个带有默认参数的原型并发出警告。虽然这是一个警告而不是错误,但是当 linking.
最有可能的原因是它的标准库没有包含scanf
.
@jongware 说的对。 SDCC 没有 scanf 实现,这就是警告 112 和后续错误 101 的原因。您可以通过在 stdio.h header 和完整源代码中查找 scanf 来自行检查。
基本上,SDCC 开发人员希望他们的编译器独立于平台,并且为嵌入式设备实现 scanf 需要有关每个平台的硬件特定知识。例如,scanf 对 Amstrad CPC 的实现与对 MSX 的实现不同,即使两者具有相同的 Z80 处理器。
根据您的目标平台,您可能会发现可用的 scanf 实现。其他选择是为您的平台实现 getchar,然后使用 gets。