您的位置:首页 > 其它

gcc编译错误长期收集汇总

2017-06-12 21:11 218 查看
自己手写代码的时候感觉一切良好,但是在编译的时候会出现奇奇怪怪的错误,一大类是粗心造成的语法错误,还有就是编译条件 不满足导致,这个很多比如变量没定义,重定义等.

编译器一般会指出在哪个文件哪行出现错误,其实这已经很好定位了,要是明白编译器说的具体是什么情况导致编译不过,这样事情会好办的多!代码编译过是前提,编译不过的代码是没有意义的,另外提出一下,项目中提交代码一定要事先编译通过并进行自测,将自己的语法错误暴露在整个项目中是很没面子的哦~

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.456E

error C2039: ‘identifier1’ : is not a member of ‘idenifier2’

中文对照:标识符1不是标识符的成员

分析:程序错误地调用或引用结构体、共用体、类的成员

error C2048: more than one default

中文对照:default语句多于一个

分析:switch语句中只能有一个default,删去多余的default

error 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’语法错误

分析:引起错误的原因很多,可能多加或少加了符号xxx

error 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),用能够看所有字符的编辑器查看文件,删除换行符后的空白字符
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  gcc 编译器