gcc编译错误长期收集汇总

自己手写代码的时候感觉一切良好,但是在编译的时候会出现奇奇怪怪的错误,一大类是粗心造成的语法错误,还有就是编译条件 不满足导致,这个很多比如变量没定义,重定义等.
编译器一般会指出在哪个文件哪行出现错误,其实这已经很好定位了,要是明白编译器说的具体是什么情况导致编译不过,这样事情会好办的多!代码编译过是前提,编译不过的代码是没有意义的,另外提出一下,项目中提交代码一定要事先编译通过并进行自测,将自己的语法错误暴露在整个项目中是很没面子的哦~

  1. fatal error C1003: error count exceeds number; stopping compilation
    中文对照 : 错误太多,停止编译
    分析:修改之前的错误,再次编译

  2. fatal error C1004: unexpected end of file found
    中文对照:文件未结束
    分析:一个函数或者一个结构定义缺少“}”、或者在一个函数调用或表达式中括号没有配对出现、或者注释符“”不完整等

  3. fatal error C1083: Cannot open include file: ‘xxx’: No such file or directory
    中文对照:无法打开头文件xxx:没有这个文件或路径
    分析:头文件不存在、或者头文件拼写错误、或者文件为只读

  4. fatal error C1903: unable to recover from previous error(s); stopping compilation
    中文对照:无法从之前的错误中恢复,停止编译
    分析:引起错误的原因很多,建议先修改之前的错误

  5. error C2001: newline in constant
    中文对照:常量中创建新行
    分析:字符串常量多行书写

  6. error C2006: #include expected a filename, found ‘identifier’
    中文对照:#include命令中需要文件名
    分析:一般是头文件未用一对双引号或尖括号括起来,例如“#include stdio.h”

  7. error C2007: #define syntax
    中文对照:#define语法错误
    分析:例如“#define”后缺少宏名,例如“#define”

  8. error C2008: ‘xxx’ : unexpected in macro definition
    中文对照:宏定义时出现了意外的xxx
    分析:宏定义时宏名与替换串之间应有空格,例如“#define TRUE”1””

  9. error C2009: reuse of macro formal ‘identifier’
    中文对照:带参宏的形式参数重复使用
    分析:宏定义如有参数不能重名,例如“#define s(a,a) (a*a)”中参数a重复

  10. error C2010:’character’ : unexpected in macro formal parameter list
    中文对照:带参宏的参数表表现未知字符
    分析:例如“#define s(r|) r*r”中参数多了一个字符‘|’

  11. error C2014: preprocessor command must start as first nonwhite space
    中文对照:预处理命令前面只允许空格
    分析:每一条预处理命令都应独占一行,不应出现其他非空格字符

  12. error C2015: too many characters in constant
    中文对照:常量中包含多个字符
    分析:字符型常量的单引号中只能有一个字符,或是以
    “\”开始的一个转义字符

  13. error C2017: illegal escape sequence
    中文对照:转义字符非法
    分析:一般是转义字符位于 ’ ’ 或 ” ” 之外,例如“char error = ’ ‘\n;”

  14. error C2018: unknown character ‘0xhh’
    中文对照:未知的字符0xhh
    分析:一般是输入了中文标点符号,例如“char error = ‘E’;”中“;”为中文标点符号

  15. error C2019: expected preprocessor directive, found ‘character’
    中文对照:期待预处理命令,但有无效字符
    分析:一般是预处理命令的#号后误输入其他无效字符,例如“#!define TRUE 1”

  16. error C2021: expected exponent value, not ‘character’
    中文对照:期待指数值,不能是字符
    分析:一般是浮点数的指数表示形式有误,例如123.456E

  17. error C2039: ‘identifier1’ : is not a member of ‘idenifier2’
    中文对照:标识符1不是标识符的成员
    分析:程序错误地调用或引用结构体、共用体、类的成员

  18. error C2048: more than one default
    中文对照:default语句多于一个
    分析:switch语句中只能有一个default,删去多余的default

  19. error C2050: switch expression not integral
    中文对照:switch表达式不是整型的
    分析:switch表达式必须是整型(或字符型),例如“switch (“a”)”中表达式为字符串,这是非法的

  20. error C2051: case expression not constant
    中文对照:case表达式不是常量
    分析:case表达式应为常量表达式,例如“case “a””中“”a””为字符串,这是非法的

  21. error C2052: ‘type’ : illegal type for case expression
    中文对照:case表达式类型非法
    分析:case表达式必须是一个整型常量(包括字符型)

  22. error C2057: expected constant expression
    中文对照:期待常量表达式
    分析:一般是定义数组时数组长度为变量,例如“int n=10; int a;”中n为变量,是非法的

  23. error C2058: constant expression is not integral
    中文对照:常量表达式不是整数
    分析:一般是定义数组时数组长度不是整型常量

  24. error C2059: syntax error : ‘xxx’
    中文对照:‘xxx’语法错误
    分析:引起错误的原因很多,可能多加或少加了符号xxx

  25. 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不是函数

  26. error C2065: ‘xxx’ : undeclared identifier
    中文对照:未定义的标识符xxx
    分析:1、如果xxx为cout、cin、scanf、printf、sqrt等,则程序中包含头文件有误
    2、未定义变量、数组、函数原型等,注意拼写错误或区分大小写。

  27. error C2078: too many initializers
    中文对照:初始值过多
    分析:一般是数组初始化时初始值的个数大于数组长度,例如“int b={1,2,3};”

  28. error C2082: redefinition of formal parameter ‘xxx’
    中文对照:重复定义形式参数xxx
    分析:函数首部中的形式参数不能在函数体中再次被定义

  29. warning: backslash and newline separated by space [enabled by default]
    中文对照:反斜杠和换行为空格所分隔 [默认启用]
    分析: 宏定义中的换行符后面跟着空白字符(空格或者Tab),用能够看所有字符的编辑器查看文件,删除换行符后的空白字符

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值