免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3513 | 回复: 4

求教如何处理c程序中的"重定义类型不匹配"的错误? [复制链接]

论坛徽章:
0
发表于 2004-02-13 22:52 |显示全部楼层
我是C语言菜鸟,写一个小程序求最大公约数的.
  
为了能够处理一些比较大的数,我用长整型来定义变量的.
  
结果出现了 Type mismatch in redeclaration of 'gcd' 错误,
  
也就是我的求最大公约数那个函数出现了"重定义类型不匹配"的错误
  
(gcd是我自己写的一个函数).也就是说,我的程序再用整型定义
  
变量时,是没有问题的.(当然是输入的值不要超过turboc2.0中
  
规定的整型变量范围的最大值).附录程序如下,请大侠帮手:
  
/* This program is designed for computing great common divisor of
two positive long integers */
/* Euclidean algorithm */
#include <math.h>;
void main()
{
/*input a & b; */
long int a, b;
long int temp;
long int rm;
printf("lease input a positive long integer:\n";
scanf("%d",&a);
printf("lease input the second long integer:\n";
scanf("%d",&b);
/* compare a & b; */
if(a<b)
{
  temp=b;
  b=a;
  a=temp;
}
rm=gcd(a,b);
printf("The great common divisor of a and b is: %d\n", rm);
}
long int gcd(long int a, long int b)
{
long int r0,r1,r;
long int q;
r0=a;
r1=b;
r=b;
while(r>;0)
{
  q=r0/r1;
  r=r0-q*r1;
  r0=r1;
  r1=r;
}
return (r0);
}

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2004-02-13 22:59 |显示全部楼层

求教如何处理c程序中的"重定义类型不匹配"的错误?

scanf("%d",&a);
把%d改成%ld,其他的地方也一样。
还有用long定义就可以了。

论坛徽章:
0
发表于 2004-02-15 16:36 |显示全部楼层

求教如何处理c程序中的"重定义类型不匹配"的错误?

你必须在main函数前声明gcd这个函数!

由于你没有声明这个函数,程序在编译时,他默认gcd函数返回类型为int.
但你在底下的函数类型为long int,故有redeclaration of 'gcd'

论坛徽章:
0
发表于 2004-02-16 22:09 |显示全部楼层

求教如何处理c程序中的"重定义类型不匹配"的错误?

谢谢,呵呵.我知道了.现在已经改好了.这儿真是一个好地方.

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2004-02-16 22:24 |显示全部楼层

求教如何处理c程序中的"重定义类型不匹配"的错误?

[quote]原帖由 "chinazhaok"]谢谢,呵呵.我知道了.现在已经改好了.这儿真是一个好地方.[/quote 发表:

欢迎常来哦!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP