我写了以下简单的C程序:
#include <stdio.h>
int num1, num2;
int sum(int, int);
int main(void);
{
printf("Enter two numbers:");
scanf("%d %d", &num1, &num2);
sum(num1, num2);
return 0;
}
int sum(int a, int b)
{
int res;
res = a + b;
return res;
}
但它会产生以下编译器错误:
prog.c:5:错误:预期的标识符或'(''''''之前的标记
可能导致此错误的原因,我该如何解决?
答案 0 :(得分:10)
声明main
函数后的分号:
int main(void);
编译器将解释为标记该函数的结尾。因为分号在那里,所以它不知道如何处理该函数声明之后的代码块。这就是恭维错误告诉你的事情:
prog.c:5:错误:预期的标识符或'(''''''之前的标记
它不知道如何处理分号标记后面的{
,它表示语句的结束。
删除分号是一个简单的解决方案;像这样重写你的主要功能:
int main(void)
{
printf("Enter two numbers:");
scanf("%d %d",&num1,&num2);
sum(num1,num2);
return 0;
}
至于评论中提出的问题:
啊,这是一个完全不同的问题。代码在语法上是正确的,因此您不会再遇到编译器错误,但它有一个逻辑错误!你从未告诉计算机打印这两个数字的总和到屏幕上。您需要插入另一个看我何时运行输出它要求输入两个数字并且不显示任何总和结果?
printf
语句,就像您拥有的第一个语句一样。但这一次,您要打印sum
函数返回的值。
最终代码可能如下所示:
int main(void)
{
printf("Enter two numbers:");
scanf("%d %d",&num1,&num2);
printf("%d\n", sum(num1, num2));
return 0;
}
答案 1 :(得分:0)
int main(void);
从该行中删除;
。
答案 2 :(得分:0)
尝试将int main(void);
替换为int main(void)
(否“;”)
答案 3 :(得分:0)
main
原型后面有分号:
int main(void);
因此,您的计划中没有main
的定义:
int main(void) { /* */ }
编译器在'{'。
之前需要函数名或结构名