自己手写代码的时候感觉一切良好,但是在编译的时候会出现奇奇怪怪的错误,一大类是粗心造成的语法错误,还有就是编译条件 不满足导致,这个很多比如变量没定义,重定义等.
编译器一般会指出在哪个文件哪行出现错误,其实这已经很好定位了,要是明白编译器说的具体是什么情况导致编译不过,这样事情会好办的多!代码编译过是前提,编译不过的代码是没有意义的,另外提出一下,项目中提交代码一定要事先编译通过并进行自测,将自己的语法错误暴露在整个项目中是很没面子的哦~
fatal error C1003: error count exceeds number; stopping compilation
中文对照 : 错误太多,停止编译
分析:修改之前的错误,再次编译fatal error C1004: unexpected end of file found
中文对照:文件未结束
分析:一个函数或者一个结构定义缺少“}”、或者在一个函数调用或表达式中括号没有配对出现、或者注释符“”不完整等fatal error C1083: Cannot open include file: ‘xxx’: No such file or directory
中文对照:无法打开头文件xxx:没有这个文件或路径
分析:头文件不存在、或者头文件拼写错误、或者文件为只读fatal error C1903: unable to recover from previous error(s); stopping compilation
中文对照:无法从之前的错误中恢复,停止编译
分析:引起错误的原因很多,建议先修改之前的错误error C2001: newline in constant
中文对照:常量中创建新行
分析:字符串常量多行书写error C2006: #include expected a filename, found ‘identifier’
中文对照:#include命令中需要文件名
分析:一般是头文件未用一对双引号或尖括号括起来,例如“#include stdio.h”error C2007: #define syntax
中文对照:#define语法错误
分析:例如“#define”后缺少宏名,例如“#define”error C2008: ‘xxx’ : unexpected in macro definition
中文对照:宏定义时出现了意外的xxx
分析:宏定义时宏名与替换串之间应有空格,例如“#define TRUE”1””error C2009: reuse of macro formal ‘identifier’
中文对照:带参宏的形式参数重复使用
分析:宏定义如有参数不能重名,例如“#define s(a,a) (a*a)”中参数a重复error C2010:’character’ : unexpected in macro formal parameter list
中文对照:带参宏的参数表表现未知字符
分析:例如“#define s(r|) r*r”中参数多了一个字符‘|’error C2014: preprocessor command must start as first nonwhite space
中文对照:预处理命令前面只允许空格
分析:每一条预处理命令都应独占一行,不应出现其他非空格字符error C2015: too many characters in constant
中文对照:常量中包含多个字符
分析:字符型常量的单引号中只能有一个字符,或是以
“\”开始的一个转义字符error C2017: illegal escape sequence
中文对照:转义字符非法
分析:一般是转义字符位于 ’ ’ 或 ” ” 之外,例如“char error = ’ ‘\n;”error C2018: unknown character ‘0xhh’
中文对照:未知的字符0xhh
分析:一般是输入了中文标点符号,例如“char error = ‘E’;”中“;”为中文标点符号error C2019: expected preprocessor directive, found ‘character’
中文对照:期待预处理命令,但有无效字符
分析:一般是预处理命令的#号后误输入其他无效字符,例如“#!define TRUE 1”error C2021: expected exponent value, not ‘character’
中文对照:期待指数值,不能是字符
分析:一般是浮点数的指数表示形式有误,例如123.456Eerror C2039: ‘identifier1’ : is not a member of ‘idenifier2’
中文对照:标识符1不是标识符的成员
分析:程序错误地调用或引用结构体、共用体、类的成员error C2048: more than one default
中文对照:default语句多于一个
分析:switch语句中只能有一个default,删去多余的defaulterror C2050: switch expression not integral
中文对照:switch表达式不是整型的
分析:switch表达式必须是整型(或字符型),例如“switch (“a”)”中表达式为字符串,这是非法的error C2051: case expression not constant
中文对照:case表达式不是常量
分析:case表达式应为常量表达式,例如“case “a””中“”a””为字符串,这是非法的error C2052: ‘type’ : illegal type for case expression
中文对照:case表达式类型非法
分析:case表达式必须是一个整型常量(包括字符型)error C2057: expected constant expression
中文对照:期待常量表达式
分析:一般是定义数组时数组长度为变量,例如“int n=10; int a;”中n为变量,是非法的error C2058: constant expression is not integral
中文对照:常量表达式不是整数
分析:一般是定义数组时数组长度不是整型常量error C2059: syntax error : ‘xxx’
中文对照:‘xxx’语法错误
分析:引起错误的原因很多,可能多加或少加了符号xxxerror C2064: term does not evaluate to a function
中文对照:无法识别函数语言
分析:1、函数参数有误,表达式可能不正确,例如“sqrt(s(s-a)(s-b)(s-c));”中表达式不正确
2、变量与函数重名或该标识符不是函数,例如“int i,j; j=i();”中i不是函数error C2065: ‘xxx’ : undeclared identifier
中文对照:未定义的标识符xxx
分析:1、如果xxx为cout、cin、scanf、printf、sqrt等,则程序中包含头文件有误
2、未定义变量、数组、函数原型等,注意拼写错误或区分大小写。error C2078: too many initializers
中文对照:初始值过多
分析:一般是数组初始化时初始值的个数大于数组长度,例如“int b={1,2,3};”error C2082: redefinition of formal parameter ‘xxx’
中文对照:重复定义形式参数xxx
分析:函数首部中的形式参数不能在函数体中再次被定义warning: backslash and newline separated by space [enabled by default]
中文对照:反斜杠和换行为空格所分隔 [默认启用]
分析: 宏定义中的换行符后面跟着空白字符(空格或者Tab),用能够看所有字符的编辑器查看文件,删除换行符后的空白字符