Turbo C++错误信息(V2.0)
/
--------------------------------------------------------------------------------
本附录列出的出错信息中用单引号括起的单词 代表一个通用的名或值,用户在屏幕上看到的出错信息是把这个单词用具体的名或值取代后的信息。例如:如果有一个C++函数goforit出现错误,用户在屏幕上看到的实际信息为:
goforit must be declared with no arguments
要查阅这一条信息,必须找下面这一条信息:
function must be declared with no arguments
下面列出本附录错误信息中用引号括起来的通用名和值, 用户得到的出错信息应该先用相应的名或值取代,然后再查阅。
手册中看到的 屏幕上看到的
argument 一个命令行或其它参数
class 一个类名
field 一个域引用
filename 一个文件名(扩展名可有可无)
group 一个组名
identifier 一个标识符(变量名或其它)
Language 一个程序语言的名字
member 数据成员或成员函数的名字
message 一个信息串
module 一个模块名
number 一个实际数
option 一个命令行或其它选择项
parameter 一个参数名
segment 一个段名
specifier 一个类型说明符
symbol 一个符号
xxxxh 一个后面跟着h的4位十六进制数
本附录按ASCII字母顺序列出出错信息。以符号(等号,逗号,括号等 )开头的信息通常放在前面。 由于上表列举的变量开头的错误信息不能以在屏幕上实际看到的出错信息的字母顺序排 列,所以所有这类信息总是放在每个错误信息表的开始处。
如果变量出现在错误信息正文后面,例如:
Incorrect command__Lineargument
那么可以按这条出错信息的字母顺序查找,此处可在“I”开头的信息中找。
一、运行错误
Turbo C++只有少量运行错误信息。下面按字母顺序列出。
●Abnormal program termination程序不正常结束。这是因为程序在运行时发现内存不够造成的。另外, 调用函数abort将显示出该信息。有些运行错误在最后将调用abort函数,因此会显示出该信息。
●Divide by 0
用整数除以0。该错误可被signal函数探知。另外,还将调用abort函数,并使程序非正常结束。
●Floating point error: Divide by 0
除数为0。如1.0/0.0。
●Floating point error: Domain
结果不是一个数。如,0.0/0.0。
●Floating point error: Overflow
在完全丢失精度的情况下,结果是+∞或-∞。如:
double x=le200*le200
●Floating point error: Partial loss of precision
在浮点操作时,丢失了精度。缺省时该错误被屏蔽,可调用control87来消除屏蔽。
●Floating point error:Underflow
浮点操作时产生下溢,下溢值用0.0替换。缺省时该错误被屏蔽,可调用control87 来消除屏蔽。
●Floating point error: Stack fault
浮点操作引起堆栈溢出。该错误不常出现,可能是由于汇编码使用的寄存器太多, 或者是没有说明浮点函数。
注意:上述这些浮点错误可以用函数control 187屏蔽,也可以用函数signal捕获。另外,这些浮点错误还将调用函数abort。以打印出:Abnormal program termination。并调用exit(3)。
●Null pointer assignment
当一个small或medium内存模式的程序退出时, 将检查程序数据段开头的若干个字节的内容是否改变。如果这些字节内容被改变,则显示该信息, 通常这是因为有一个值被存进一个未初始化的指针中。尽管产生这个错误的程序在其它方面看上去运行正常,但它反映程序内部有严重错误,应对其予以重视。对一个未初始化的指针间接赋值可能导致不可预料的后果(在large、compact 或huge内存模式下,还可能出现“死锁”)。在集成调试器中可跟踪null指针。
●Stack overflow
Turbo C++程序中堆栈缺省大小是4096字节。这对于大多数程序来说是足够的,但是当程序执行复杂递归或大量使用局部数据时可能出现堆栈溢出。 只有当打开堆栈检查功能时才可能得到该信息。若要改正此错误,可以换用较大的内存模式试一试, 或者通过改变全局变量stklen的值来增加堆栈大小,还可以减少程序对堆栈的使用。为了减少函数的局部数据数量,可以将其说明为静态变量(static)。例如:
void anyfunction(void)
{
static int buf[2000]; /*分配在数据段中*/
int list [2000]; /*分配在堆栈中*/
将局部变量说明为static,有两个缺点:
1.它将永久地占用全局变量和堆栈以外的空间,不过这还只是个小缺点。 2.若一个函数中的变量说明为静态的,那么该函数不能递归调用或异步调用。因为对于说明为Static的变量,每次调用函数时对该变量使用的是相同的空间而不是分开的空间。
二、编译错误
由Turbo C++编译器(TC或TCC)产生的诊断信息分为三类:致命错误、错误和警告。
●致命错误:使得编译过程立即停止。应该采取适当的解决办法,然后重新编译。
●错误:表示程序语法错误,磁盘或内存存取错误以及命令行错误。编译器将完成当前编译阶段,然后停止。并且编译器在每个编译阶段(预处理,分析,优化和代码生成) 都将尽可能多地找出源程序中的真正错误。
●警告:不终止编译过程。它表明条件有疑问,而这些条件作为语言的部分是合法的。当使用和机器有关的结构时,编译器总是生成警告信息。
编译器按下列格式显示信息:先是信息类型,然后是文件名和行号, 最后才是信息内容。在下面的每类信息中将按照字母顺序列出。
1. 致命错误
●Bad call of inline function
在使用一个宏定义的内部函数(预定义的宏)时没有用正确的方式调用它。C中预定义的内部函数是以双下划线(__)为开头和结尾的.
●Irreducible expression tree
错误行上的某个表达式使得代码生成器无法产生代码。这是一个编译器内部错误,这时将不翻译该表达式。如果编译器曾出现过该错误,请通知Borland公司。
●Out of memory
编译时内存溢出。要么增加机器内存,如果你的机器已有640K内存, 就应该简化源文件。
●Register allocation failure
错误行上的某个表达式太复杂,以致代码生成器无法产生该表达式的代码。这也是一个编译器内部错误。请简化该表达式。如果出现此错误,请通知Borland公司。
2.错误
●constructorcannot return a value
C++的构造函数的return语句不能有一个表达式作为返回值。
●constructoris not a base class of class
一个C++的类构造函数class试图调用一个基类构造函数constructor,或者是你试图改变class::constructor的访问权限。constructor不是class的一个基类。检查你的说明。
●functionlcannot be distinguished from function2
函数1和2的说明中参数类型表的差别不足以区分它们。 可尝试将某一个函数中的参数类型或参数次序改变一下。
●functionis ambiguous
在函数调用中,不止一个重载函数的参数表可以和调用的参数表匹配(使用缺省的参数转换规则)。应该对一个或多个参数进行显式类型转换来解决这种二义性问题。
●functionmust be declared with no arguments该C++操作符函数不能有参数。
●functionmust be declared with one argument该C++操作符函数只能有一个参数。
●functionmust be declared with two arguments该C++操作符函数必须有两个参数。
●functionwas previously declared without static该函数在此处说明为静态的,但在前面却已经说明为外部的(extern)或全局的。ANSI C不允许这种情况出现。
●functionwsa previously declared with the language language该函数在不同的地方用不同的语言修饰词(cdecl,pascal或interrupt)说明,这是错误的。
●identifier cannot be declared in an anonymous union无名的联合中不能有成员函数或静态成员。无名的联合只能包含数据成员。
●identifier cannot be used in static member function
一个静态的成员函数只能使用它所在的类中的静态成员,尽管它有完全的访问权限。此错误是由于试图使用一个需要用this指针的成员。
●identifieris inaccessible because also in class
将一个类既作为直接基类又作为间接基类是不合法的。 可使基类在两处说明为虚拟的。
●identifier is not a data member and cant be initialized here
在一个构造函数中只能对数据成员初始化。 此信息表示初始化表中含有一个静态成员或函数成员。
●identifieris not a member of struct
identifier被当作一个结构成员来引用,但它不是一个结构成员。请检查你的说明。
●identifieris not a parameter
在一个旧形式函数定义的形参说明部分中idenitfier被说明,但却不是作为一个参数被列举的,可以去掉此说明或可把identifier作为一个参数。
●identifieris not legal here
类型说明符identifier和其它类型名冲突或重复,或者它被当作一个typedef名字使用,而此时在这个作用域中它不是一个typedef名字。
●identifieris virtual and cannot be explicitly initialized
一个C++类的构造函数试图调用一个基类构造函数identifier,但该基类是一个虚基类。 虚基类不能被显式地初始化,编译程序会自动地隐含调用基类的缺省构造函数base::base()。
●identifiermust be a member function
大多数C++的操作符函数可以是类成员或普通的非成员函数,但有一些只能是类的成员函数。这些是operator=、operator→和operator()及以及类型转换。
●identifiermust be a member function or have an argument of class type
大多数操作符函数必须有一个显式或隐式的类类型参数。 此操作符函数在类外说明且没有 一个显式的类类型参数。
/
--------------------------------------------------------------------------------
本附录列出的出错信息中用单引号括起的单词 代表一个通用的名或值,用户在屏幕上看到的出错信息是把这个单词用具体的名或值取代后的信息。例如:如果有一个C++函数goforit出现错误,用户在屏幕上看到的实际信息为:
goforit must be declared with no arguments
要查阅这一条信息,必须找下面这一条信息:
function must be declared with no arguments
下面列出本附录错误信息中用引号括起来的通用名和值, 用户得到的出错信息应该先用相应的名或值取代,然后再查阅。
手册中看到的 屏幕上看到的
argument 一个命令行或其它参数
class 一个类名
field 一个域引用
filename 一个文件名(扩展名可有可无)
group 一个组名
identifier 一个标识符(变量名或其它)
Language 一个程序语言的名字
member 数据成员或成员函数的名字
message 一个信息串
module 一个模块名
number 一个实际数
option 一个命令行或其它选择项
parameter 一个参数名
segment 一个段名
specifier 一个类型说明符
symbol 一个符号
xxxxh 一个后面跟着h的4位十六进制数
本附录按ASCII字母顺序列出出错信息。以符号(等号,逗号,括号等 )开头的信息通常放在前面。 由于上表列举的变量开头的错误信息不能以在屏幕上实际看到的出错信息的字母顺序排 列,所以所有这类信息总是放在每个错误信息表的开始处。
如果变量出现在错误信息正文后面,例如:
Incorrect command__Lineargument
那么可以按这条出错信息的字母顺序查找,此处可在“I”开头的信息中找。
一、运行错误
Turbo C++只有少量运行错误信息。下面按字母顺序列出。
●Abnormal program termination程序不正常结束。这是因为程序在运行时发现内存不够造成的。另外, 调用函数abort将显示出该信息。有些运行错误在最后将调用abort函数,因此会显示出该信息。
●Divide by 0
用整数除以0。该错误可被signal函数探知。另外,还将调用abort函数,并使程序非正常结束。
●Floating point error: Divide by 0
除数为0。如1.0/0.0。
●Floating point error: Domain
结果不是一个数。如,0.0/0.0。
●Floating point error: Overflow
在完全丢失精度的情况下,结果是+∞或-∞。如:
double x=le200*le200
●Floating point error: Partial loss of precision
在浮点操作时,丢失了精度。缺省时该错误被屏蔽,可调用control87来消除屏蔽。
●Floating point error:Underflow
浮点操作时产生下溢,下溢值用0.0替换。缺省时该错误被屏蔽,可调用control87 来消除屏蔽。
●Floating point error: Stack fault
浮点操作引起堆栈溢出。该错误不常出现,可能是由于汇编码使用的寄存器太多, 或者是没有说明浮点函数。
注意:上述这些浮点错误可以用函数control 187屏蔽,也可以用函数signal捕获。另外,这些浮点错误还将调用函数abort。以打印出:Abnormal program termination。并调用exit(3)。
●Null pointer assignment
当一个small或medium内存模式的程序退出时, 将检查程序数据段开头的若干个字节的内容是否改变。如果这些字节内容被改变,则显示该信息, 通常这是因为有一个值被存进一个未初始化的指针中。尽管产生这个错误的程序在其它方面看上去运行正常,但它反映程序内部有严重错误,应对其予以重视。对一个未初始化的指针间接赋值可能导致不可预料的后果(在large、compact 或huge内存模式下,还可能出现“死锁”)。在集成调试器中可跟踪null指针。
●Stack overflow
Turbo C++程序中堆栈缺省大小是4096字节。这对于大多数程序来说是足够的,但是当程序执行复杂递归或大量使用局部数据时可能出现堆栈溢出。 只有当打开堆栈检查功能时才可能得到该信息。若要改正此错误,可以换用较大的内存模式试一试, 或者通过改变全局变量stklen的值来增加堆栈大小,还可以减少程序对堆栈的使用。为了减少函数的局部数据数量,可以将其说明为静态变量(static)。例如:
void anyfunction(void)
{
static int buf[2000]; /*分配在数据段中*/
int list [2000]; /*分配在堆栈中*/
将局部变量说明为static,有两个缺点:
1.它将永久地占用全局变量和堆栈以外的空间,不过这还只是个小缺点。 2.若一个函数中的变量说明为静态的,那么该函数不能递归调用或异步调用。因为对于说明为Static的变量,每次调用函数时对该变量使用的是相同的空间而不是分开的空间。
二、编译错误
由Turbo C++编译器(TC或TCC)产生的诊断信息分为三类:致命错误、错误和警告。
●致命错误:使得编译过程立即停止。应该采取适当的解决办法,然后重新编译。
●错误:表示程序语法错误,磁盘或内存存取错误以及命令行错误。编译器将完成当前编译阶段,然后停止。并且编译器在每个编译阶段(预处理,分析,优化和代码生成) 都将尽可能多地找出源程序中的真正错误。
●警告:不终止编译过程。它表明条件有疑问,而这些条件作为语言的部分是合法的。当使用和机器有关的结构时,编译器总是生成警告信息。
编译器按下列格式显示信息:先是信息类型,然后是文件名和行号, 最后才是信息内容。在下面的每类信息中将按照字母顺序列出。
1. 致命错误
●Bad call of inline function
在使用一个宏定义的内部函数(预定义的宏)时没有用正确的方式调用它。C中预定义的内部函数是以双下划线(__)为开头和结尾的.
●Irreducible expression tree
错误行上的某个表达式使得代码生成器无法产生代码。这是一个编译器内部错误,这时将不翻译该表达式。如果编译器曾出现过该错误,请通知Borland公司。
●Out of memory
编译时内存溢出。要么增加机器内存,如果你的机器已有640K内存, 就应该简化源文件。
●Register allocation failure
错误行上的某个表达式太复杂,以致代码生成器无法产生该表达式的代码。这也是一个编译器内部错误。请简化该表达式。如果出现此错误,请通知Borland公司。
2.错误
●constructorcannot return a value
C++的构造函数的return语句不能有一个表达式作为返回值。
●constructoris not a base class of class
一个C++的类构造函数class试图调用一个基类构造函数constructor,或者是你试图改变class::constructor的访问权限。constructor不是class的一个基类。检查你的说明。
●functionlcannot be distinguished from function2
函数1和2的说明中参数类型表的差别不足以区分它们。 可尝试将某一个函数中的参数类型或参数次序改变一下。
●functionis ambiguous
在函数调用中,不止一个重载函数的参数表可以和调用的参数表匹配(使用缺省的参数转换规则)。应该对一个或多个参数进行显式类型转换来解决这种二义性问题。
●functionmust be declared with no arguments该C++操作符函数不能有参数。
●functionmust be declared with one argument该C++操作符函数只能有一个参数。
●functionmust be declared with two arguments该C++操作符函数必须有两个参数。
●functionwas previously declared without static该函数在此处说明为静态的,但在前面却已经说明为外部的(extern)或全局的。ANSI C不允许这种情况出现。
●functionwsa previously declared with the language language该函数在不同的地方用不同的语言修饰词(cdecl,pascal或interrupt)说明,这是错误的。
●identifier cannot be declared in an anonymous union无名的联合中不能有成员函数或静态成员。无名的联合只能包含数据成员。
●identifier cannot be used in static member function
一个静态的成员函数只能使用它所在的类中的静态成员,尽管它有完全的访问权限。此错误是由于试图使用一个需要用this指针的成员。
●identifieris inaccessible because also in class
将一个类既作为直接基类又作为间接基类是不合法的。 可使基类在两处说明为虚拟的。
●identifier is not a data member and cant be initialized here
在一个构造函数中只能对数据成员初始化。 此信息表示初始化表中含有一个静态成员或函数成员。
●identifieris not a member of struct
identifier被当作一个结构成员来引用,但它不是一个结构成员。请检查你的说明。
●identifieris not a parameter
在一个旧形式函数定义的形参说明部分中idenitfier被说明,但却不是作为一个参数被列举的,可以去掉此说明或可把identifier作为一个参数。
●identifieris not legal here
类型说明符identifier和其它类型名冲突或重复,或者它被当作一个typedef名字使用,而此时在这个作用域中它不是一个typedef名字。
●identifieris virtual and cannot be explicitly initialized
一个C++类的构造函数试图调用一个基类构造函数identifier,但该基类是一个虚基类。 虚基类不能被显式地初始化,编译程序会自动地隐含调用基类的缺省构造函数base::base()。
●identifiermust be a member function
大多数C++的操作符函数可以是类成员或普通的非成员函数,但有一些只能是类的成员函数。这些是operator=、operator→和operator()及以及类型转换。
●identifiermust be a member function or have an argument of class type
大多数操作符函数必须有一个显式或隐式的类类型参数。 此操作符函数在类外说明且没有 一个显式的类类型参数。
ko20010214
=================================
大功告成,打个Kiss!
ko20010214@MSN.com
神州优雅Q300C
Intel CeleronM 370处理器 | 256MbDDR内存
40G硬盘 | USB2.0 | IEEE 1394
13.3 ' WXGA 宽屏(16:10) | COMBO光驱
10/100M网卡 | 四合一读卡器
=================================
大功告成,打个Kiss!
ko20010214@MSN.com
神州优雅Q300C
Intel CeleronM 370处理器 | 256MbDDR内存
40G硬盘 | USB2.0 | IEEE 1394
13.3 ' WXGA 宽屏(16:10) | COMBO光驱
10/100M网卡 | 四合一读卡器

。
的构造函数,这样数组元素才能被构造, 这个构造函数只有一个参数(指向它的类的引用)并称为一个引用构造函数。
perator=(class&) to copy a vector
i,10) {…}