Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
简单C程序返回太多参数错误_C_Sdcc - Fatal编程技术网

简单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

所以我刚刚开始学习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",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