所谓编译错误就是我们平常所说的bug。对于初级程序员来说,bug是常伴身边的,不夸张地说,写代码和改bug耗费的时间是一样的。而看完此系列文章后,便能读懂这些英文编译错误,有针对性地修改程序,大大缩短改bug的时间,从而省出更多时间学习新知识。
此篇文章是系列文章的第二篇,黑马程序员C/C++学院将承接第一篇继续为大家分享常见编译错误及分析(27~52):
27 error C2065: 'xxx' : undeclaredidentifier 中文对照:(编译错误)未定义的标识符xxx 分析:1、如果xxx为cout、cin、scanf、printf、sqrt等,则程序中包含头文件有误 2、未定义变量、数组、函数原型等,注意拼写错误或区分大小写。
28 error C2078: too many initializers 中文对照:(编译错误)初始值过多 分析:一般是数组初始化时初始值的个数大于数组长度,例如“int b[2]={1,2,3};”
29 error C2082: redefinition offormal parameter 'xxx' 中文对照:(编译错误)重复定义形式参数xxx 分析:函数首部中的形式参数不能在函数体中再次被定义
30 error C2084: function 'xxx' alreadyhas a body 中文对照:(编译错误)已定义函数xxx 分析:在VC++早期版本中函数不能重名,6.0版本中支持函数的重载,函数名可以相同但参数不一样
31 error C2086: 'xxx' : redefinition 中文对照:(编译错误)标识符xxx重定义 分析:变量名、数组名重名
32 error C2087: '<Unknown>': missing subscript 中文对照:(编译错误)下标未知 分析:一般是定义二维数组时未指定第二维的长度,例如“int a[3][];”
33 error C2100: illegal indirection 中文对照:(编译错误)非法的间接访问运算符“*” 分析:对非指针变量使用“*”运算
34 error C2105: 'operator' needsl-value 中文对照:(编译错误)操作符需要左值 分析:例如“(a+b)++;”语句,“++”运算符无效
35 error C2106: 'operator': leftoperand must be l-value 中文对照:(编译错误)操作符的左操作数必须是左值 分析: 例如“a+b=1;”语句,“=”运算符左值必须为变量,不能是表达式
36 error C2110: cannot add two pointers 中文对照:(编译错误)两个指针量不能相加 分析:例如“int *pa,*pb,*a; a = pa + pb;”中两个指针变量不能进行“+”运算
37 error C2117: 'xxx' : array boundsoverflow 中文对照:(编译错误)数组xxx边界溢出 分析:一般是字符数组初始化时字符串长度大于字符数组长度,例如“char str[4] = "abcd";”
38 error C2118: negative subscriptor subscript is too large 中文对照:(编译错误)下标为负或下标太大 分析:一般是定义数组或引用数组元素时下标不正确 error C2124: divide or mod by zero 中文对照:(编译错误)被零除或对0求余分析:例如“int i = 1 / 0;”除数为0
39 error C2133: 'xxx' : unknownsize 中文对照:(编译错误)数组xxx长度未知 分析:一般是定义数组时未初始化也未指定数组长度,例如“int a[];”
本篇文章为系列文章的第二篇,后续还有一篇文章继续为大家介绍最常见的编译错误及分析,希望大家看完后能有所收获。
|