细说VC上的那些错误提示
这个是本宝宝的专长~ ~(~ ̄▽ ̄)~
1. error C2087: '<Unknown>' : missing subscript
中国话:丢失了下标。顾名思义是丢失了数组的下标,定义二维数组时需要给出列的大小。比如:char a[m][n]时,m可以省略
2. error C2133: 'a' : unknown size
中国话:定义数组懒得给数组大小时,一定要赋初始值,如int b[]={1,2,3};
3. error C2143: syntax error : missing ';' before 'for'
中国话:for之前少了一个分号
4. error C2018: unknown character '0xa3'
error C2018: unknown character '0xbb'
中国话:有非ascii标准字符,也就是说你用了汉语中的标点符号。
5. error C2143: syntax error : missing ';' before 'type'
中国话:在遇到这个错误的时候,你是否会联想到楼上有第3个错误提示奈?type前面少了一个分号。那你找去吧,type在哪里啊……那么这个问题一般有以下几种情况,需要我们根据位置提示来寻找错误:
{}不配对,有的编译器会报告无”;”这种错误
在VC中变量的定义和声明只能放在程序开头,如果是在其他命令语句后声明新的变量就会出现这种错误
6. error C2146: syntax error : missing ')' before identifier 'a'
error C2143: syntax error : missing ']' before ','
中国话:对,类似于上方花括号的不对等,这次是()和[]的不对等,缺少了)或者]。
7. error C2082: redefinition of formal parameter 'x'
中国话:重复定义了变量’x’
8. error C2065: 'x1' : undeclared identifier
中国话:用到了变量’x1’可是却没有定义
9. warning C4700: local variable 'x2' used without having been initialized
中国话:这个warning是在警告你,x2没有初始值。大概有的小朋友觉得这个不是error就不重视这个问题,于是运行了一下,程序提示你“xxxx程序已经停止工作”,你表示很炸,因为已经编译通过了,但是找了半天也找不到错误在哪里。
那么小编在这里告诉你,“xxxx程序已经停止工作”的主要原因是,在本该储存地址的指针变量中储存了其他数据。比如int *a;你本来应该写*a=1;然而写成了a=1;,这就会导致悲剧的发生。一般的地址错误不会有警告提示,这个警告提示是你使用scanf语句不加“&”取地址符才会出现。但是无论怎样,不注意指针的层层存储关系,最终结果都是一样停止工作……
10. error C2100: illegal indirection
中国话:这个错误提示直译意思就是非法的取值,一般出现是因为在非指针变量前加了’*’。
11. warning C4013: 'earnMonef' undefined; assuming extern returning int
中国话:没有定义这个函数,一般情况下可能是手残党打错了字母……
12. warning C4244: 'function' : conversion from 'double ' to 'int ', possible loss of data
warning C4761: integral size mismatch in argument; conversion supplied
中国话:函数的声明的参数和函数原型的参数类型不同。声明和原型参数储存所需空间的大小也不同。虽然在这里只是warning级别可能影响不大,但是有时可能会出现error,难以发现的错误。
13. fatal error C1083: Cannot open include file: 'wallet.h': No such file or directory
中国话:想必这个错误提示同学们已经很清楚了,无法打开h文件。原因除了双引号和尖括号的区别外(什么?你不知道这两个的区别,自行翻书去!(╰_╯)#),还有可能是你因为晚期手癌而导致的h文件文件名和包含h文件的语句里的名字不相同。
14. error C2008: 'x' : unexpected in macro definition
中国话:宏定义时出现了意外的x..比如#define m 3;或者#define m=3;就是错误的宏定义格式。
15. error C2054: expected '(' to follow 'xxxx'
中国话:这个提示吧,小编查了一下,发现有很多种错误情况,一一列举出来臣妾做不到啊….于是总结一下,意思既然是希望xxxx后面跟一个括号,想必这一行xxxx后面在语法上一定还有什么内容忘了添加了。可能是该加分号但是没加,也可能是忘记了必要的括号。
16. error C2001: newline in constant
中国话:字符串不完整,引号内部就摁了个回车换行了,不过小编觉得一般人不会犯这种错误……
17. error C2015: too many characters in constant
中国话:字符常量中的字符太多了。这里要明白字符常量和字符串的区别,单引号表示字符型常量,并且字符型常量一般就是一个字符。如果单引号中的字符数多于4个,就会引发这种错误。另外如果字符常量右边的单引号忘记写了,也会引发这个错误。
18. error C2275: 'CountArray' : illegal use of this type as an expression
中国话:这个错误的原因是变量的声明和定义没有放在程序的开头,而放在了其他命令的后面。
19. error C2166: l-value specifies const object
中国话:定义const类型常量之后,却想改变这个常量的内容。要知道常量const储存的数据是不可改变的,所以const在实验中一般用在定义指针,也就是说一个变量的地址不变,但是这个地址里储存的数据可变。这个问题一般是因为本来该用“==”却用成了“=”。
有不懂的同学欢迎留言提问啊!
有补充的同学也欢迎留言补充!
有自己看不懂的其他的提示也可以留言求助的! 会有一大票同学会帮助你的!