随笔

PTA C语言答题,编译错误:error: redefinition of ‘main’

想刷点c语言的题,看pta还行就点开第一题[练习5-1-求m到n之和],线上环境是Gcc6.5,提交显示编译错误,我打开那个帮助也没找到什么有用的信息

编译错误

a.c:20:5: error: redefinition of ‘main’
int main()
^~~~
a.c:5:5: note: previous definition of ‘main’ was here
int main()

错误原因

翻译汉语就是重新定义了main,这个错误是很不常见的。一般来说,正常人不会犯这个错误,那就是编译器的问题。

裁判测试程序样例:

 

#求m到n之和
#include 

int sum(int m, int n);

int main()
{    
    int m, n;

    scanf("%d %d", &m, &n);
    printf("sum = %d\n", sum(m, n));

    return 0;
}

/* 你的代码将被嵌在这里 */

就写个累加和的函数我寻思着也不难,然而

#include 

int sum(int m, int n);

int main()
{    
    int m, n;

    scanf("%d %d", &m, &n);
    printf("sum = %d\n", sum(m, n));

    return 0;
}

/* 你的代码将被嵌在这里 */
int sum(int m, int n){
    if(n<m){
		int t = m;
		m = n;
		n = t;
	}
	int sum;
	int i;
	for(i = m; i<=n;i++){
		sum+=i;
	}
	return sum(); 
} 

编译失败。
我以为是她的问题。当第二次提交也报编译错误的时候,我甚至有点不自信打开了devc++编译运行了,正常。
我才意识到可能是让我只提交函数部分,于是只复制了样例以外的,提交通过。有提示说/* 你的代码将被嵌在这里 */的,没理解。
编译通过,no error
然而编译器又报了

a.c: In function ‘main’:
a.c:9:5: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
scanf(“%d %d”, &m, &n);
^~~~~~~~~~~~~~~~~~~~~~
a.c: In function ‘sum’:
a.c:27:9: warning: ‘sum’ may be used uninitialized in this function [-Wmaybe-uninitialized]
return sum;
^~~

难道还要忽略scanf返回值写sizeof吗

pta也太严格了吧,我看这个配套课程还是浙大c语言的入门……

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

返回顶部