一个编译错误!没见过!不知道怎么解决!!!!着急呀。

zhdleo 2002-06-06 09:13:29
Vc6.0编译后:
显示:

ratnumber.cpp(15) : fatal error C1001: INTERNAL COMPILER ERROR
(compiler file 'msc1.cpp', line 1786)
Please choose the Technical Support command on the Visual C++
Help menu, or open the Technical Support help file for more information
Error executing cl.exe.

RatNumber.obj - 1 error(s), 0 warning(s)

麻烦解释一下!!
...全文
80 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanamaker 2002-06-11
  • 打赏
  • 举报
回复
缺省参数值只能出现在函数声明中,不能写在函数定义中!!!!
RatNumber::RatNumber(long num/*=0*/, long den/*=1*/)
{ number=num;
denominator=den;
}

zhdleo 2002-06-11
  • 打赏
  • 举报
回复
先关掉每个运算后的simplify( RatNumber &temp );或simplify( RatNumber &temp ); 好了!!

我也觉得有问题!

可是上面一个我怎么觉得没问题??

给num den 一个初值!
当你没有传入的时候,调用的就应给是0 1
传入新值,就按新值赋给 number denominator

应该就是这样呀
fengye 2002-06-10
  • 打赏
  • 举报
回复
缺省参数不能重定义
RatNumber::RatNumber(long num/*=0*/, long den/*=1*/)
{ number=num;
denominator=den;
}

这些写法不对
simplify( RatNumber &temp );
simplify( RatNumber &this );

其他还有不少错误, 自己慢慢改吧
luoyang_limeng 2002-06-10
  • 打赏
  • 举报
回复
当你关闭下面一行时:
friend RatNumber operator -( RatNumber&, RatNumber& );
提示:'RatNumber::RatNumber' : redefinition of default parameter : parameter 2等34个错误,先查一下。
darkay 2002-06-07
  • 打赏
  • 举报
回复
是编译器出错了,要解决还真是要联系MS的技术支持。要自己解决的话可以先disable所有的优化,然后在一个一个打开吧。
zhdleo 2002-06-07
  • 打赏
  • 举报
回复
哦什么~!

不要吧!我晕!

上面我贴着程序呢!

谁也编译试试看!会不会有什么不同的编译结果!!

或是谁,已经看出错误了!告诉我吧。
tubin 2002-06-07
  • 打赏
  • 举报
回复
下面是我在MSDN国j \\


Visual C++ 概念:生成 C/C++ 程序

致命错误 C1001内部编译器错误(编译器文件 file,第 line number 行)

编译器无法生成正确的构造代码,原因可能是出自表达式与优化选项的组合。尝试移除一个或多个优化选项,并重新编译包含错误信息所指示的行的函数。

通过移除一个或多个优化选项有可能解决该问题。若要确定哪一个选项出了问题,请一次移除一个选项并重新编译,直到错误信息消失为止。通常最有可能导致此错误的选项有 /Og、/Oi 和 /Oa。确定了哪一个选项是症结所在后,则可以对发生错误的函数使用 optimize 杂注来禁用它,并为模块的其余部分继续使用该选项。

尝试重写报告错误的行或围绕该行周围的若干行。如果这不起作用,请与 Microsoft 产品支持服务联系。


zhdleo 2002-06-07
  • 打赏
  • 举报
回复

Please choose the Technical Support command on the Visual C++
Help menu, or open the Technical Support help file for more
这让我找什么VC技术支持!!!
怎么可能吗!!!

可这个compiler file 'msc1.cpp', line 1786
是什么???我就找不到这个文件!!!!!!!!

奇怪了!!郁闷中。。。。。。
zhdleo 2002-06-06
  • 打赏
  • 举报
回复
编译提示问题出在第1个friend处!
就是:friend RatNumber operator -( RatNumber&, RatNumber& );

zhdleo 2002-06-06
  • 打赏
  • 举报
回复
我就是奇怪了!!
我那是一个Ratnumber的class

没有写mian();

我只想看看我的class写对没!!
就试着编译,按理,没有错误,编译应该通过!!

class如下::

#include <iostream>
#include <stdlib.h>
using namespace std;

class RatNumber
{ public:
RatNumber(long num=0, long den=1);
void assign(long num, long den);
RatNumber operator=( RatNumber& );
RatNumber operator=(long);
RatNumber operator+( RatNumber& );
RatNumber operator+=( RatNumber& );
RatNumber operator*( RatNumber& );
RatNumber operator*=( RatNumber& );
friend RatNumber operator -( RatNumber&, RatNumber& );
friend RatNumber& operator -=( RatNumber&, RatNumber& );
friend RatNumber operator /( RatNumber&, RatNumber& );
friend RatNumber& operator /=( RatNumber&, RatNumber& );
private:
void simplify( RatNumber& );
long number, denominator;
};

RatNumber::RatNumber(long num=0, long den=1)
{ number=num;
denominator=den;
}

void RatNumber::assign(long num, long den)
{ number=num;
denominator=den;
}

void RatNumber::simplify( RatNumber &Rat )
{ for(int i=1 ; ; )
{ if(i <=Rat.number)
{ if( Rat.number%i == 0 && Rat.denominator%i==0)
{ Rat.number = Rat.number/i;
Rat.denominator = Rat.denominator/i;
if(i==1)
{ i++; }
}
else
{ i++; }
}
else
{ break; }
}
}

RatNumber RatNumber::operator=( RatNumber &rhs )
{ RatNumber temp;
temp.number = rhs.number;
temp.denominator = rhs.denominator;
return temp;
}

RatNumber RatNumber::operator=(long num)
{ RatNumber temp;
temp.number = num;
temp.denominator = 1;
return temp;
}

RatNumber RatNumber::operator+( RatNumber &rhs )
{ RatNumber temp;
if(temp.denominator==rhs.denominator)
{ temp.number = temp.number + rhs.number;
}
else if(temp.denominator!=rhs.denominator)
{ temp.number = temp.number * rhs.denominator + rhs.number * temp.denominator;
temp.denominator = temp.denominator * rhs.denominator;
}
simplify( RatNumber &temp );
return temp;
}

RatNumber RatNumber::operator+=( RatNumber &rhs )
{ RatNumber temp;
if(temp.denominator==rhs.denominator)
{ temp.number += rhs.number;
}
else if(temp.denominator!=rhs.denominator)
{ temp.number = temp.number * rhs.denominator + rhs.number * temp.denominator;
temp.denominator = temp.denominator * rhs.denominator;
}
simplify( RatNumber &temp );
return temp;
}

RatNumber RatNumber::operator*( RatNumber &rhs )
{ RatNumber temp;
temp.number = temp.number * rhs.number;
temp.denominator = temp.denominator * rhs.denominator;
simplify( RatNumber &temp );
return temp;
}

RatNumber RatNumber::operator*=( RatNumber &rhs )
{ RatNumber temp;
temp.number *= rhs.number;
temp.denominator *= rhs.denominator;
simplify( RatNumber &temp );
return temp;
}

RatNumber& operator -( RatNumber &R1 , RatNumber &R2 )
{ if(R1.denominator==R2.denominator)
{ number = R1.number - R2.number;
denominator = R1.denominator
}
else if (R1.denominator!=R2.denominator)
{ number = R1.number * R2.denominator - R2.number * R1.denominator;
denominator = R1.denominator * R2.denominator;
}
simplify( RatNumber &this );
return *this;
}

RatNumber& operator -=( RatNumber &R1, RatNumber &R2 )
{ if(R1.denominator==R2.denominator)
{ number = R1.number - R2.number;
denominator = R1.denominator
}
else if (R1.denominator!=R2.denominator)
{ number = R1.number * R2.denominator - R2.number * R1.denominator;
denominator = R1.denominator * R2.denominator;
}
simplify( RatNumber &this );
return *this;
}

RatNumber& operator /( RatNumber &R1, RatNumber &R2 )
{ number = R1.number * R2.denominator;
denominator = R1.denominator * R2.number;
simplify( RatNumber &this );
return *this;
}

RatNumber& operator /=( RatNumber &R1, RatNumber &R2 )
{ number = R1.number * R2.denominator;
denominator = R1.denominator * R2.number;
simplify( RatNumber &this );
return *this;
}

codingcoding 2002-06-06
  • 打赏
  • 举报
回复
我遇到过。你打个补丁就可以了。应该是vc的bug
晨星 2002-06-06
  • 打赏
  • 举报
回复
一般是语法错误引起,把1786行前后检查一下。
pipi_jf 2002-06-06
  • 打赏
  • 举报
回复
你的源码呢?
至少给出前15行的吧。
swisel 2002-06-06
  • 打赏
  • 举报
回复
好象是联接错误吧!

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧