C语言编译出错信息详解
C语言常见编译错误提示
C语言常见编译错误提示1)error C2001:newline in constant编号:C2001直译:在常量中出现了换行。
错误分析:1.字符串常量、字符常量中是否有换行。
2.在这句语句中,某个字符串常量的尾部是否漏掉了双引号。
3.在这语句中,某个字符创常量中是否出现了双引号字符“"”,但是没有使用转义符“\"”。
4.在这句语句中,某个字符常量的尾部是否漏掉了单引号。
5.是否在某句语句的尾部,或语句的中间误输入了一个单引号或双引号。
2)error C2015:too many characters in constant编号:C2015直译:字符常量中的字符太多了。
错误分析:单引号表示字符型常量。
一般的,单引号中必须有且只能有一个字符(使用转义符时,转义符所表示的字符当作一个字符看待),如果单引号中的字符数多于4个,就会引发这个错误。
另外,如果语句中某个字符常量缺少右边的单引号,也会引发这个错误,例如:if(x=='x||x=='y'){…}值得注意的是,如果单引号中的字符数是2-4个,编译不报错,输出结果是这几个字母的ASC码作为一个整数(int,4B)整体看待的数字。
3)error C2137:empty character constant编号:C2137直译:空的字符定义。
错误分析:原因是连用了两个单引号,而中间没有任何字符,这是不允许的。
4)error C2018:unknown character'0x##'编号:C2018直译:未知字符‘0x##’。
错误分析:0x##是字符ASC码的16进制表示法。
这里说的未知字符,通常是指全角符号、字母、数字,或者直接输入了汉字。
如果全角字符和汉字用双引号包含起来,则成为字符串常量的一部分,是不会引发这个错误的。
5)error C2041:illegal digit'#'for base'8'编号:C2141直译:在八进制中出现了非法的数字‘#’(这个数字#通常是8或者9)。
c语言编译错误信息
C语言编译错误信息Turbo C 编译程序检查源程序中三类出错信息:致命错误、一般错误和警告。
致命错误出现很少,它通常是内部编译出错。
在发生致命错误时,编译立即停止,必须采取一些适当的措施并重新编译。
一般错误指程序的语法错误、磁盘或内存存取错误或命令错误等。
编译系统遇到这类错误时,一般也要停止编译。
警告并不阻止编译进行。
它指出一些值得怀疑的情况,而这些情况本身又有可能合理地成为源程序的一部分。
因此,警告信息只是提醒用户注意,编译过程并不停止。
编译系统在发现源程序中的各类错误时,首先显示错误信息,然后显示源文件名和出错的行号。
但必须注意,真正的错误位置不一定准在显示出错的行上,也可能是在前一行或前几行;有时,好象发生了很多错误,而实际上可能是由一个错误造成的。
下面按字母顺序分别列出这三类错误信息。
对每一条信息,提供可能产生的原因和修正的方法。
致命错误1.Bad call of in-lint function内部函数非法调用在使用一个宏定义的内部函数时,没有正确调用。
一个内部函数以双下划线(--)开始和结束。
2.Irreducible expression tree 不可约表达式树这种错误是由于源文件中的某些表达式使得代码生成程序无法为它产生代码。
这种表达式必须避免使用。
3. Registcr allocation failure 存储器分配失效这种错误指的是源文件行中的表达式太复杂,代码生成程序无法为它生成代码。
此时应简化这种复杂的表达式或干脆避免使用它。
一般错误1. #Operator not followed by macro argument name#运算符后无宏变量名。
在宏定义中,#用于标识一宏变量名。
“#”后必须跟一宏变量名。
2. ‘xxxxxxxx’nor an argument‘xxxxxxxx’不是函数参数。
在源程序中将该标识符定义为一个函数参数,但此标识符没有在函数表中出现。
c语言常见问题及解决方法
c语言常见问题及解决方法
一、C语言常见问题及解决方法
1、程序编译错误,原因及解决方法
(1)语法错误:检查程序中出现的缩进、分号、圆括号、大括号的位置,以及程序中变量的定义,保证程序的语法正确。
(2)类型错误:检查程序中关系运算符两边操作数的类型是否匹配,以及变量的使用是否正确,保证每一步运算的类型正确。
(3)变量未声明:检查变量在程序中是否已经声明,声明后才能正确使用。
2、程序运行错误,原因及解决方法
(1)程序中存在逻辑错误:检查程序中的流程是否按设计要求正确,以及程序输出结果是否正确。
(2)程序中存在数据错误:检查程序中的数据是否正确,数据输入、输出以及运算结果都要求正确。
(3)程序运行错误:检查程序中的函数调用是否正确,注意函数的参数和返回值的类型要求。
3、程序编译成功却无法执行,原因及解决方法
这可能是程序出现了语法错误,编译器无法判断,所以编译成功,但是在执行时系统无法识别出程序的命令。
可以通过重新编写程序,查找错误语句的方式查找程序错误,并根据提示修改程序,以解决此问题。
C语言常见错误解析
C语言常见错误解析:1)编译错误和运行错误:1,选择编辑的文件类型不是C语言。
如:文件扩展名不是.cpp, 而是.asp等。
重做。
错误提示:解析:编辑区上方的文件名的扩展名为:.asp是网站文件, 不是正常的.cpp文件。
当然编译菜单为灰色,无法编译。
2,做完一个程序后,没有关闭工作区,继续做下一个程序,编译系统无法确定编译多个主函数中的哪一个。
关闭工作区后,重做(这时,可使用复制粘贴方法)。
错误提示:解析:左边看出,有两个main()函数,原来的是t.cpp(工程名也是t), 现在的是li.cpp,可以编译,但不能运行。
每次运行的都是原来的程序t.exe.同时,可以看到,编译的主文件名li.cpp,与构件的文件名t.exe不相同。
3,编译系统本身故障。
编译菜单呈灰色,无法编译,按下ctl+alt+del三个键,在任务工作区,强制关闭VC,重新启动。
错误提示:略改正方法:按照正确的流程创建C语言源程序文件。
2)宏定义错误:引发语法错误错误原因:1,位置错误,宏定义错误放入函数内部;应在所有函数的前面。
错误提示:解析:遇到define,标志符出现错误,没有定义。
与函数体的语句定义格式不符。
2,缺少宏定义标志符“#”;错误提示:define pi 3.1415927解析:引起三个错误。
3,宏定义后面多加了分号“;”,误认为是语句;错误提示:语句,定义#define pi 3.1415927; 使用宏定义area=2*pi*banjing*banjing;解析:非法间接使用。
4,宏定义中库函数名错误:如sdtil.h, maths.h等错误提示:解析:不能打开stido.h文件,单引号中标志符’stido.h’错误。
5,宏定义中库函数引用标志错误:应使用一对尖括号或一对双引号<>或”“,不用函数标志圆括号( )错误提示:解析:#include中单引号中左圆括号‘(’使用错误,两函数没有定义。
C语言错误代码及错误信息错误
C语言错误代码及错误信息错误C语言错误代码及错误信息错误释义error 1: Out of memory 内存溢出error 2: Identifier expected 缺标识符error 3: Unknown identifier 未定义的标识符error 4: Duplicate identifier 重复定义的标识符error 5: Syntax error 语法错误error 6: Error in real constant 实型常量错误error 7: Error in integer constant 整型常量错误error 8: String constant exceeds line 字符串常量超过一行error 10: Unexpected end of file 文件非正常结束error 11: Line too long 行太长error 12: Type identifier expected 未定义的类型标识符error 13: Too many open files 打开文件太多error 14: Invalid file name 无效的文件名error 15: File not found 文件未找到error 16: Disk full 磁盘满error 17: Invalid compiler directive 无效的编译命令error 18: Too many files 文件太多error 19: Undefined type in pointer def 指针定义中未定义类型error 20: Variable identifier expected 缺变量标识符error 21: Error in type 类型错误error 22: Structure too large 结构类型太长error 23: Set base type out of range 集合基类型越界error 24: File components may not be files or objectsfile分量不能是文件或对象 error 25: Invalid string length 无效的字符串长度error 26: Type mismatch 类型不匹配error 27:error 27:Invalid subrange base type 无效的子界基类型error 28:Lower bound greater than upper bound 下界超过上界error 29:Ordinal type expected 缺有序类型error 30:Integer constant expected 缺整型常量error 31:Constant expected 缺常量error 32:Integer or real constant expected 缺整型或实型常量error 33:Pointer Type identifier expected 缺指针类型标识符error 34:Invalid function result type 无效的函数结果类型error 35:Label identifier expected 缺标号标识符error 36:BEGIN expected 缺BEGINerror 37:END expected 缺ENDerror 38:Integer expression expected 缺整型表达式error 39:Ordinal expression expected 缺有序类型表达式error 40:Boolean expression expected 缺布尔表达式error 41:Operand types do not match 操作数类型不匹配error 42:Error in expression 表达式错误error 43:Illegal assignment 非法赋值error 44:Field identifier expected 缺域标识符error 45:Object file too large 目标文件太大error 46:Undefined external 未定义的外部过程与函数error 47:Invalid object file record 无效的OBJ文件格式error 48:Code segment too large 代码段太长error 49:Data segment too large 数据段太长error 50:DO expected 缺DOerror 51:Invalid PUBLIC definition 无效的PUBLIC定义error 52:Invalid EXTRN definition 无效的EXTRN定义error 53: Too many EXTRN definitions 太多的EXTRN定义error 54:OF expected 缺OFerror 55:INTERFACE expected 缺INTERFACEerror 56:Invalid relocatable reference 无效的可重定位引用error 57:THEN expected 缺THENerror 58:TO or DOWNTO expected 缺TO或DOWNTOerror 59:Undefined forward 提前引用未经定义的说明error 61:Invalid typecast 无效的类型转换error 62:Division by zero 被零除error 63:Invalid file type 无效的文件类型error 64:Cannot read or write variables of this type 不能读写此类型变量error 65:Pointer variable expected 缺指针类型变量error 66:String variable expected 缺字符串变量error 67:String expression expected 缺字符串表达式error 68:Circular unit reference 单元UNIT部件循环引用error 69:Unit name mismatch 单元名不匹配error 70:Unit version mismatch 单元版本不匹配error 71:Internal stack overflow 内部堆栈溢出error 72:Unit file format error 单元文件格式错误error 73:IMPLEMENTATION expected 缺IMPLEMENTATION error 74:Constant and case types do not match 常量和CASE 类型不匹配error 75:Record or object variable expected 缺记录或对象变量error 76:Constant out of range 常量越界error 77:File variable expected 缺文件变量error 78:Pointer expression expected 缺指针表达式error 79:Integer or real expression expected 缺整型或实型表达式error 80:Label not within current block 标号不在当前块内error 81:Label already defined 标号已定义error 82:Undefined label in preceding statement part 在前面未定义标号error 83:Invalid @ argument 无效的@参数error 84:UNIT expected 缺UNITerror 85: ";" expected 缺“;”error 86: ":" expected 缺“:”error 87: "," expected 缺“,”error 88: "(" expected 缺“(”error 89: ")" expected 缺“)”error 90: "=" expected 缺“=”error 91: ":=" expected 缺“:=”error 92: "[" or "(." Expected 缺“[”或“(.”error 93: "]" or ".)" expected 缺“]”或“.)”error 94: "." expected 缺“.”error 95: ".." expected 缺“..”error 96:Too many variables 变量太多error 97:Invalid FOR control variable 无效的FOR循环控制变量error 98:Integer variable expected 缺整型变量error 99:Files and procedure types are not allowed here 该处不允许文件和过程类型error 100:String length mismatch 字符串长度不匹配error 101:Invalid ordering of fields 无效域顺序error 102:String constant expected 缺字符串常量error 103:Integer or real variable expected 缺整型或实型变量error 104:Ordinal variable expected 缺有序类型变量error 105:INLINE error INLINE错误error 106:Character expression expected 缺字符表达式error 107:Too many relocation items 重定位项太多error 108:Overflow in arithmetic operation 算术运算溢出error 112:CASE constant out of range CASE常量越界error 113:Error in statement 表达式错误error 114:Cannot call an interrupt procedure 不能调用中断过程error 116:Must be in 8087 mode to compile this 必须在8087模式编译error 117:Target address not found 找不到目标地址error 118:Include files are not allowed here 该处不允许INCLUDE文件error 119:No inherited methods are accessible here 该处继承方法不可访问 error 121:Invalid qualifier 无效的限定符error 122:Invalid variable reference 无效的变量引用error 123:Too many symbols 符号太多error 124:Statement part too large 语句体太长error 126:Files must be var parameters 文件必须是变量形参error 127:Too many conditional symbols 条件符号太多error 128:Misplaced conditional directive 条件指令错位error 129:ENDIF directive missing 缺ENDIF指令error 130:Error in initial conditional defines 初始条件定义错误error 131:Header does not match previous definition 和前面定义的过程或函数不匹配error 133:Cannot evaluate this expression 不能计算该表达式error 134:Expression incorrectly terminated 表达式错误结束error 135:Invalid format specifier 无效格式说明符error 136:Invalid indirect reference 无效的间接引用error 137:Structured variables are not allowed here 该处不允许结构变量error 138:Cannot evaluate without System unit 没有System 单元不能计算 error 139:Cannot access this symbol 不能存取符号error 140:Invalid floating point operation 无效的符号运算error 141:Cannot compile overlays to memory 不能编译覆盖模块至内存error 142:Pointer or procedural variable expected 缺指针或过程变量error 143:Invalid procedure or function reference 无效的过程或函数调用error 144:Cannot overlay this unit 不能覆盖该单元error 146:File access denied 不允许文件访问error 147:Object type expected 缺对象类型error 148:Local object types are not allowed 不允许局部对象类型error 149:VIRTUAL expected 缺VIRTUALerror 150: Method identifier expected 缺方法标识符error 151:Virtual constructors are not allowed 不允许虚构造函数error 152:Constructor identifier expected 缺构造函数标识符error 153:Destructor identifier expected 缺析构函数标识符error 154:Fail only allowed within constructors 只能在构造函数内使用Fail标准过程error 155:Invalid combination of opcode and operands 操作数与操作符无效组合error 156:Memory reference expected 缺内存引用指针error157:Cannot add or subtract relocatable symbols 不能加减可重定位符号error 158:Invalid register combination 无效寄存器组合error 159:286/287 instructions are not enabled 未激活286/287指令error 160:Invalid symbol reference 无效符号指针error 161:Code generation error 代码生成错误error 162:ASM expected 缺ASMerror 166:Procedure or function identifier expected 缺过程或函数标识符 error 167:Cannot export this symbol 不能输出该符号error 168:Duplicate export name 外部文件名重复error 169:Executable file header toerror 170:Too many segments 段太多。
C语言常见错误分析
C语言常见错误分析C语言是一门非常强大和灵活的编程语言。
然而,由于人为的错误或者语法错误,程序在编译或者运行的过程中常常会出现错误。
下面是常见的C语言错误以及它们的分析。
1.语法错误:语法错误是最常见的错误类型,也是最容易修复的错误。
它们包括缺少分号、括号不匹配、使用未定义的变量等。
这些错误通常会导致编译器的语法错误提示。
2.类型错误:类型错误是由于变量类型不匹配或者操作符错误而引起的。
例如,使用一个整数变量来存储浮点数值,或者将一个指针赋值给一个非指针类型的变量。
这些错误可能导致错误的计算结果或者报错。
3.逻辑错误:逻辑错误是程序的逻辑结构有误,导致程序无法正确执行。
这种错误通常不能通过编译器检测出来,而需要开发人员通过调试来找到并修复。
例如,程序的循环条件错误导致无限循环,或者条件判断错误导致程序走入错误的分支。
4.数组越界错误:数组越界错误是指访问数组时超出了数组的有效范围。
这种错误通常导致程序崩溃或者产生不可预测的结果。
例如,访问数组元素时使用了一个超过数组长度的下标。
为了避免这种错误,开发人员应该始终确保数组下标在有效范围内。
5.空指针错误:空指针错误是指使用了一个未初始化或者已经释放的指针。
这种错误通常导致程序崩溃或者产生不可预测的结果。
为了避免空指针错误,开发人员应该在使用指针之前初始化,并且在使用完毕后及时释放。
6.内存泄漏:内存泄漏是指程序在分配内存之后没有释放,导致系统中的可用内存越来越少。
如果内存泄漏严重,最终可能会导致程序崩溃或者系统变慢。
为了避免内存泄漏,开发人员应该始终确保在不再需要内存时及时释放。
7.死循环:死循环是指程序中的循环条件永远为真,导致程序陷入无限循环。
这种情况可能导致程序无法继续执行后续代码或者崩溃。
为了避免死循环,开发人员应该在循环中始终更新循环条件。
8.未处理的异常:异常是程序运行过程中可能发生的错误,它可能导致程序崩溃或者产生不可预测的结果。
为了避免未处理的异常,开发人员应该使用异常处理机制来捕获和处理异常。
C语言编译错误大全
52: Incompatible type conversion — 不相容的类型转换
53: Incorrect number format — 错误的数据格式
54: Incorrect use of default — Default使用不当
78: Not an allowed type — 不允许使用的类型
79: Numeric constant too large — 数值常太大
80: Out of memory — 内存不够用
81: Parameter xxx is never used — 能数xxx没有用到
82: Pointer required on left side of -> — 符号->的左边必须是指针
1、一般是你在调用函数的时候传递的是int类型的数据,但那个函数定义的参数类型不是int(比如是结构或者指针或者数组)。
2、下面为C语言的错误大全及中文解释:
1: Ambiguous operators need parentheses — 不明确的运算需要用括号括起
2: Ambiguous symbol xxx — 不明确的符号
47: Illegal use of floating point — 非法的浮点运算
48: Illegal use of pointer — 指针使用非法
49: Improper use of a typedefsymbol — 类型定义符号使用不恰当
50: In-line assembly not allowed — 不允许使用行间汇编
c查找编译出错的语句
c查找编译出错的语句(实用版)目录1.编译出错的原因2.如何查找编译出错的语句3.编译出错时的解决方法正文在编程过程中,有时候我们会遇到编译出错的情况,这可能会让我们感到困扰。
不过,请不要担心,接下来我将为大家介绍如何查找编译出错的语句,并给出相应的解决方法。
一、编译出错的原因编译出错的原因有很多,常见的有以下几种:1.语法错误:代码中存在语法错误,导致编译器无法识别。
2.拼写错误:变量名、函数名或关键字拼写错误。
3.缺少或引用错误:代码中引用了不存在的变量、函数或库,或者引用错误。
4.逻辑错误:代码逻辑错误,导致程序运行结果不符合预期。
二、如何查找编译出错的语句1.查看错误信息当程序编译出错时,编译器会输出相应的错误信息。
我们需要仔细阅读这些信息,以便快速定位出错位置。
2.使用编辑器或 IDE 的查找功能许多编辑器和集成开发环境(IDE)都提供了查找功能,可以帮助我们快速定位到出错的语句。
我们可以使用这些工具查找错误信息中提到的文件和行数,进而找到具体的出错语句。
3.分析代码逻辑如果错误信息不够明确,我们可以尝试分析代码逻辑,找出可能出错的地方。
这需要我们逐行阅读代码,理解代码的运行逻辑,以便找到问题所在。
三、编译出错时的解决方法1.修复语法错误如果编译出错是由于语法错误导致的,我们需要仔细检查代码,找到错误的地方,并进行修正。
2.检查拼写错误检查变量名、函数名和关键字的拼写,确保没有拼写错误。
如果有拼写错误,需要进行修改。
3.修复引用错误如果编译出错是由于引用错误导致的,我们需要找到引用错误的地方,并进行修复。
这可能包括修改引用变量、函数或库的名称,或者确保引用的库已经正确导入。
4.修改代码逻辑如果编译出错是由于代码逻辑错误导致的,我们需要分析代码逻辑,找到问题所在,并进行修改。
总之,在编程过程中遇到编译出错时,我们需要保持冷静,通过查看错误信息、查找出错语句和采取相应的解决方法,来解决这些问题。
C语言编译中的常见错误
C语⾔编译中的常见错误C语⾔编译中的常见错误1、警告类错误‘XXX’declare but never used变量XXX已定义但从未⽤过。
‘XXX’is assigned a value which is never used变量XXX已赋值但从未⽤过。
Code has no effect 程序中含有没有实际作⽤的代码。
Non-portable pointer conversion不适当的指针转换,可能是在应该使⽤指针的地⽅⽤了⼀个⾮0的数值。
Possible us e of ‘XXX’before definition表达式中使⽤了未赋值的变量Possibly incorrect assignment这样的赋值可能不正确Redeclaration of ‘main’⼀个程序⽂件中主函数main不⽌⼀个。
Suspicious pointer conversion可疑的指针转换。
通常是使⽤了基本类型不匹配的指针。
Unreachable code程序含有不能执⾏到的代码。
2、错误或致命错误Compound statement missing } in function main程序结尾缺少括号}。
“}”expected;“(”expected等复合语句或数组初始化的结尾缺少“)”;“(”。
Case outside of switch case不属于Switch结构,多由于switch结构中的花括号不配对所致。
Case statement missing ‘:’switch结构中的某个case之后缺少冒号。
Constant expression required定义数组时指定的数组长度不是常量表达式。
Declaration syntax error 结构体或联合类型的定义后缺少分号。
Declaration was expected 缺少说明,通常是因为缺少分界符如逗号、分号、右圆括号等所引起的。
Default outside switch Default部分放到了switch结构之外,⼀般是因为花括号不匹配⽽引起的。
如何解决C语言中的编译错误与警告
如何解决C语言中的编译错误与警告C语言是一种广泛应用于系统编程和嵌入式开发的编程语言,它的编译过程中常常会出现各种错误和警告。
这些错误和警告可能会导致程序无法正确编译或者在运行时出现问题。
因此,解决C语言中的编译错误与警告是每个程序员都需要掌握的重要技能。
本文将介绍一些常见的编译错误和警告,并提供一些解决方法。
一、理解编译错误和警告的含义在解决编译错误和警告之前,我们首先需要理解它们的含义。
编译错误是指在编译过程中发现的语法错误或者逻辑错误,这些错误会导致程序无法正确编译。
编译警告是指在编译过程中发现的一些潜在的问题,虽然不会导致程序无法编译,但可能会导致程序在运行时出现问题。
二、常见的编译错误和警告1. 语法错误:语法错误是最常见的编译错误之一,它通常是由于编程人员在编写代码时遗漏了分号、括号不匹配等导致的。
解决语法错误的方法是仔细检查代码,确保语法正确。
2. 未声明的标识符:当使用一个未声明的标识符时,编译器会报错。
解决这个问题的方法是在使用标识符之前先进行声明或者引入相应的头文件。
3. 类型不匹配:类型不匹配是指在赋值或者函数调用过程中,变量的类型与期望的类型不一致。
解决这个问题的方法是检查变量的类型,并进行相应的类型转换。
4. 未使用的变量:编译器会对未使用的变量发出警告,这可能是由于代码中存在一些无用的变量。
解决这个问题的方法是删除未使用的变量或者对其进行使用。
5. 未初始化的变量:未初始化的变量可能导致程序在运行时出现未定义的行为。
解决这个问题的方法是在使用变量之前先进行初始化。
6. 函数返回值不匹配:函数的返回值类型与函数定义时声明的返回值类型不一致会导致编译错误。
解决这个问题的方法是检查函数的返回值类型,并进行相应的修改。
7. 潜在的内存泄漏:编译器可能会对未释放的内存发出警告,这可能会导致内存泄漏。
解决这个问题的方法是在使用完内存后及时释放。
三、解决编译错误和警告的方法1. 仔细阅读编译错误和警告信息:编译器通常会提供详细的错误和警告信息,我们应该仔细阅读这些信息,找出问题所在。
十大编译错误及解析
Code has no effect
解析:代码无效;当编译程序发觉一种具有无
效操作符旳语句时,发出此警告。可能是因为 其他错误引起。例如语句“a+b;”对每一种变量 都不起作用,无需操作,且可能引起一种错误。
警告范例1:
#include<stdio.h>
void main()
{
int k; for(k=1,k<5,k++)
警告报错位置
printf("&");
} 会有两个信息:
warning: Code has no effect
error: For statement missing ;
警告范例2:
#include<stdio.h>
void main()
{
int k=3;
k=1/3*k;
警告位置
}
警告原因:1/3肯 定为0,因背面旳
报错位置
Lvalue repuired
Lvalue:左值
Lvalue repuired
解析:赋值祈求;赋值运算符旳左边必须 是一种地址体现式,涉及数值变量、指针变 量、构造引用域、间接指针和数组元素。
错误范例:
void main {
int a; 3=a; }
报错位置
Divided error 或 division by zero
十大编译错误及解析
错误(Error) Statement missing; Declaration syntax error Undefined symbol‘xxx’ Misplaced else Compound statement missing} Redeclaration of“xxx” Constant expression required For statement missing; Too few parameter in call to‘xxx’ Case statement missing: Lvalue repuired Divided error 或 division by zero 警告(warning) Code has no effect 。
C语言常见错误分析汇总
C语言常见错误分析汇总C语言是一种广泛应用的编程语言,但由于语法相对复杂,初学者容易犯一些常见的错误。
下面将汇总一些常见的C语言错误,以便帮助初学者更好地理解和避免这些问题。
1.语法错误:C语言对语法要求非常严格,一些错误的语法表达会导致编译错误。
例如,缺少分号、括号不成对等。
2.逻辑错误:这类错误通常是代码逻辑错误,导致程序运行结果与预期不同。
例如,条件判断错误、循环错误等。
3.变量未初始化:在使用变量之前,未对其进行初始化操作会导致不确定的结果。
这种错误可能会导致程序崩溃或产生意外结果。
4.数组越界:在C语言中,数组的下标从0开始,如果使用了超出数组范围的下标,会导致越界错误。
这可能会修改其他内存空间的值,导致程序错误。
5.内存泄漏:动态分配内存后没有正确释放会导致内存泄漏。
这在长时间运行的程序中可能导致内存耗尽。
6.不匹配的数据类型:数据类型不匹配会导致计算错误或编译错误。
例如,对整型变量使用浮点数运算符,或使用未定义的数据类型。
7.空指针解引用:解引用空指针会导致程序崩溃。
在使用指针之前,一定要确保其指向有效的内存空间。
8.死循环:循环条件错误或循环体内没有正确的终止条件会导致死循环,程序无法正常退出。
9.多次释放同一块内存:多次释放同一块动态分配的内存会导致程序错误或崩溃。
10.缺少返回语句:在函数中缺少返回语句或返回语句在多个分支中没有覆盖所有情况,会导致未定义的行为。
11.使用未定义的变量:在使用变量之前,必须先定义该变量。
否则会导致编译错误。
12.逻辑短路错误:逻辑运算符中,逻辑短路原则是如果已经可以确定逻辑表达式的结果,后续的表达式不会被执行。
如果依赖于后续表达式的计算结果,会导致逻辑错误。
13.误解优先级和结合性:C语言中运算符有优先级和结合性,如果不理解运算符的优先级和结合性,会导致计算错误。
14.使用未声明的函数:在调用函数之前,必须先声明函数。
否则会导致编译错误。
15. 不正确的格式化字符串:在使用printf等函数进行格式化输出时,必须提供与格式字符串匹配的参数,否则会导致未定义的行为。
C语言常见编程错误及解决方法
C语言常见编程错误及解决方法C语言是一种广泛应用于系统开发、嵌入式系统编程和底层软件开发的程序设计语言。
然而,即使对于有经验的开发者来说,编写C语言程序时仍然可能会遇到各种各样的错误。
本文将介绍常见的C语言编程错误,并提供解决这些错误的方法。
一、语法错误语法错误是最常见的C语言编程错误之一。
它们通常是由于开发者书写错误或遗漏必要的符号导致的。
下面是一些常见的语法错误及其解决方法:1. 缺少分号在C语言中,分号是语句结束的标志。
如果在编写语句时忘记了分号,将导致编译错误。
解决这个问题的方法是仔细检查代码并确保每个语句末尾都有分号。
2. 括号不匹配括号在C语言中用于控制运算符的优先级和函数的参数列表。
如果在编写代码时忘记了括号或者括号不匹配,将导致编译错误。
解决这个问题的方法是仔细检查代码并确保每个左括号都有一个相应的右括号。
3. 变量声明错误在C语言中,变量必须先声明后使用。
如果在使用变量之前没有声明它,将导致编译错误。
解决这个问题的方法是在使用变量之前先声明它,或者使用头文件来声明变量。
二、逻辑错误逻辑错误是在代码的执行过程中出现的错误,导致程序无法按照预期的方式运行。
下面是一些常见的逻辑错误及其解决方法:1. 数组越界在C语言中,数组的索引从0开始,访问超出数组范围的元素将导致未定义的行为。
解决这个问题的方法是确保数组索引在正确的范围内,并确保不会越界访问数组。
2. 逻辑表达式错误逻辑表达式用于控制循环和条件语句。
如果逻辑表达式的条件写错了,将导致错误的代码执行路径。
解决这个问题的方法是仔细检查逻辑表达式并确保它按照预期工作。
3. 死循环死循环是指循环条件一直为真,导致程序无法跳出循环。
解决这个问题的方法是在编写循环时确保循环条件最终会变为假,或者在循环中使用控制语句来跳出循环。
三、内存错误内存错误是指在程序中使用了未分配的内存或访问了已释放的内存。
这些错误可能导致程序崩溃或产生不确定的行为。
C语言常见错误及解决方法
C语言常见错误及解决方法C语言是一种广泛应用于系统软件和应用软件开发的编程语言。
然而,由于其语法较为复杂,初学者在编写C语言程序时常会犯一些常见错误。
本文将介绍几种常见的C语言错误及解决方法。
1. 语法错误(Syntax Error)语法错误是指程序中存在错误的语法结构,编译器无法理解这些语法结构,从而导致编译错误。
常见的语法错误包括拼写错误、大小写错误、标点符号错误等。
解决方法是仔细检查代码中的语法结构,确保语法正确。
2. 声明错误(Declaration Error)声明错误是指在程序中存在未定义或重复定义的变量、函数等声明。
解决方法是确保声明的变量和函数在使用之前已被正确地定义,避免重复定义。
3. 类型错误(Type Error)类型错误是指在程序中使用了错误的数据类型。
例如,将整数赋值给浮点型变量,或将字符赋值给整型变量等。
解决方法是确保赋值的数据类型与变量的数据类型匹配。
4. 逻辑错误(Logic Error)逻辑错误是指程序在运行过程中逻辑上的错误,导致程序得出错误的结果。
例如,使用错误的循环条件,导致循环无法正常结束。
解决方法是仔细检查程序的逻辑,确保逻辑正确,避免逻辑错误。
5. 数组越界错误(Array Out-of-Bounds Error)数组越界错误是指访问数组时超出了数组的边界。
例如,对一个长度为5的数组进行赋值时,访问第6个元素。
解决方法是确保对数组的访问不超过数组的边界。
6. 内存泄露错误(Memory Leak Error)内存泄露错误是指在程序中申请内存空间后,未正确释放该空间,导致内存的持续分配而无法释放。
解决方法是在申请内存空间后,使用相应的释放函数(如free()释放内存空间。
7. 死循环错误(Infinite Loop Error)死循环错误是指程序中存在无法结束的循环结构。
例如,循环条件永远为真,导致程序无法终止。
解决方法是仔细检查循环条件,确保循环能够正常结束。
C语言编译错误信息提示
C语言编译错误信息提示1.Array bounds missing数组的界限“]”丢失。
在源文件中定义了一个数组,但此数组没有以右方括号结束。
2.Array size too large数组长度太大。
定义的数组太大,可用内存不够。
3.Bad configuration file配置文件不正确。
TURBOC.CFG配置文件中包含不是合适命令行选择项的非注解文字。
配置文件命令选择项必须以一短横线(-)开始。
4.Bad file name format in include directive使用include指令时,文件名格式不正确。
Include文件名必须用引号(“filename.h”)或尖括号(<filename.h>)括起来,否则将产生此类错误。
如果使用了宏,则产生的扩展正文也不正(因为无引号)。
5.Cannot modify a const object不能修改一个常量对象。
对定义为常量的对象进行不合法操作(如常量赋值)引起此类错误。
6.Case outside of switchCase出现在switch外,编译程序发现Case语句出现在switch句句外面,通常是由于括号不匹配造成的。
7.Case statement missingCase语句漏掉。
Case语句必须包含一以冒号终结的常量表达式。
可能的原因是丢了冒号或在冒号前多了别的符号。
8.Case syntax errorCase语法错误。
Case中包含了一些不正确的符号。
9.Character constant too long字符常量太长。
字符常量只能是一个或两个字符长。
10.Compound statement missing复合语句漏掉了大括号“}”,编译程序扫描到源文件末时,未发现结束大括号,通常是由于大括号不匹配造成的。
11.Could not find ‘xxxxxxxx.xxx’找不到’xxxxxxxx’文件。
C语言中的常见错误及解决方法
C语言中的常见错误及解决方法C语言作为一种广泛应用于软件开发领域的编程语言,常常出现一些让初学者或经验不足的程序员困惑的错误。
本文将介绍C语言中常见的错误,并提供解决这些错误的方法。
一、语法错误语法错误是编程过程中最常见的错误之一。
它们通常由于代码中存在语法错误或书写错误而导致。
以下是一些常见的语法错误和解决方法:1.1 缺少分号分号是C语言中语句结束的标志,如果未在语句末尾添加分号,编译器会报错。
解决方法是仔细检查代码,确保每个语句的末尾都有分号。
1.2 括号不匹配在C语言中,括号必须成对出现。
如果括号未正确匹配,编译器会报错。
解决方法是仔细检查代码,确保每个左括号都有对应的右括号。
1.3 大小写错误C语言对大小写敏感,因此函数和变量的命名必须与其声明中的大小写完全匹配。
解决方法是检查代码中的命名,并确保其大小写匹配。
1.4 未定义的变量使用未定义的变量会导致编译器报错。
解决方法是确保在使用变量之前先进行声明或定义。
二、逻辑错误逻辑错误在语法上没有问题,但程序的逻辑流程存在缺陷,导致程序运行不符合预期。
以下是一些常见的逻辑错误和解决方法:2.1 数组越界访问在C语言中,数组的索引从0开始。
如果超出数组的索引范围进行访问,会导致程序崩溃或产生意想不到的结果。
解决方法是检查数组索引,并确保它们在合法范围内。
2.2 逻辑运算错误逻辑运算符(如&&、||和!)在C语言中用于组合表达式。
但是,如果这些运算符的使用不当,可能会导致逻辑错误。
解决方法是仔细检查逻辑运算表达式,并确保其符合预期的逻辑规则。
2.3 循环错误循环是C语言中常用的结构之一,但循环中的错误可能导致程序无限循环或不执行循环体。
解决方法是检查循环条件和循环变量,确保它们能正确地控制循环的执行。
三、内存错误内存错误是C语言中常见的错误类型之一。
以下是一些常见的内存错误和解决方法:3.1 内存泄漏内存泄漏指的是在程序中未正确释放分配的内存空间。
C语言编译错误总结
非常实用的,吸收前辈的经验,我们才能少走弯路。
和C 编译器错误信息中文翻译(1)L15 重复调用***WARNING L15: MULTIPLE CALL TO SEGMENTSEGMENT: ?PR?SPI_RECEIVE_WORD?D_SPICALLER1: ?PR?VSYNC_INTERRUPT?MAINCALLER2: ?C_C51STARTUP该警告表示连接器发现有一个函数可能会被主函数和一个中断服务程序(或者调用中断服务程序的函数)同时调用,或者同时被多个中断服务程序调用。
出现这种问题的原因之一是这个函数是不可重入性函数,当该函数运行时它可能会被一个中断打断,从而使得结果发生变化并可能会引起一些变量形式的冲突(即引起函数内一些数据的丢失,可重入性函数在任何时候都可以被ISR 打断,一段时间后又可以运行,但是相应数据不会丢失)。
原因之二是用于局部变量和变量(暂且这样翻译,arguments,[自变量,变元一数值,用于确定程序或子程序的值])的内存区被其他函数的内存区所覆盖,如果该函数被中断,则它的内存区就会被使用,这将导致其他函数的内存冲突。
例如,第一个警告中函数WRITE_GMVLX1_REG 在D_GMVLX1.C 或者D_GMVLX1.A51 被定义,它被一个中断服务程序或者一个调用了中断服务程序的函数调用了,调用它的函数是VSYNC_INTERRUPT,在MAIN.C 中。
解决方法:如果你确定两个函数决不会在同一时间执行(该函数被主程序调用并且中断被禁止),并且该函数不占用内存(假设只使用寄存器),则你可以完全忽略这种警告。
如果该函数占用了内存,则应该使用连接器(linker)OVERLAY 指令将函数从覆盖分析(overlayanalysis)中除去,例如:OVERLAY (?PR?_WRITE_GMVLX1_REG?D_GMVLX1 ! *)上面的指令防止了该函数使用的内存区被其他函数覆盖。
C语言常见编译错误及分析大全
C语言常见编译错误及分析大全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中文对照:(编译错误)常量中包含多个字符分析:字符型常量的单引号中只能有一个字符,或是以“\”开始的一个转义字符,例如“char error = 'error';”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.456E17、error C2039: 'identifier1' : is not a member of 'identifier2'中文对照:(编译错误)标识符1不是标识符2的成员分析:程序错误地调用或引用结构体、共用体、类的成员18、error C2041: illegal digit 'x' for base 'n'中文对照:(编译错误)对于n进制来说数字x非法分析:一般是八进制或十六进制数表示错误,例如“int i = 081;”语句中数字‘8’不是八进制的基数19、error C2048: more than one default中文对照:(编译错误)default语句多于一个分析:switch语句中只能有一个default,删去多余的default20、error C2050: switch expression not integral中文对照:(编译错误)switch表达式不是整型的分析:switch表达式必须是整型(或字符型),例如“switch ("a")”中表达式为字符串,这是非法的21、error C2051: case expression not constant中文对照:(编译错误)case表达式不是常量分析:case表达式应为常量表达式,例如“case "a"”中“"a"”为字符串,这是非法的22、error C2052: 'type' : illegal type for case expression中文对照:(编译错误)case表达式类型非法分析:case表达式必须是一个整型常量(包括字符型)23、error C2057: expected constant expression中文对照:(编译错误)期待常量表达式分析:一般是定义数组时数组长度为变量,例如“int n=10; int a[n];”中n为变量,这是非法的24、error C2058: constant expression is not integral中文对照:(编译错误)常量表达式不是整数分析:一般是定义数组时数组长度不是整型常量25、error C2059: syntax error : 'xxx'中文对照:(编译错误)‘xxx’语法错误分析:引起错误的原因很多,可能多加或少加了符号xxx26、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不是函数27、error C2065: 'xxx' : undeclared identifier中文对照:(编译错误)未定义的标识符xxx分析:1、如果xxx为cout、cin、scanf、printf、sqrt等,则程序中包含头文件有误2、未定义变量、数组、函数原型等,注意拼写错误或区分大小写。
C语言常见错误及解决方法
C语言常见错误及解决方法C语言是一种广泛应用的编程语言,具有高效性和可移植性等特点。
然而,由于C语言对细节的要求较高,很容易出现各种错误。
本文将介绍C语言常见的错误及解决方法。
1.语法错误语法错误是最常见也是最容易发现的错误。
它们通常是由于拼写错误、错误的标点使用或缺少必要的符号而引起的。
解决方法是仔细检查代码,并使用编译器提供的错误信息作为参考。
2.语义错误语义错误是指代码逻辑上的错误,导致程序在运行时产生意外的结果。
这些错误通常是由于错误的条件判断、错误的变量使用或错误的控制流等引起的。
解决方法是通过仔细分析代码,检查可能的逻辑错误。
3.数组越界错误数组越界错误是指访问数组时,超出了数组的界限。
这种错误可能会导致程序崩溃或产生错误的结果。
解决方法是仔细检查数组访问的边界条件,确保索引值在合法范围内。
4.空指针错误空指针错误是指使用未初始化的指针或将指针赋值为空指针,并尝试对其进行操作。
这种错误可能会导致程序崩溃或产生未定义的行为。
解决方法是在使用指针之前,始终初始化指针,并检查指针是否为空。
5.内存泄漏内存泄漏是指程序在分配内存后,未正确释放该内存造成的。
这种错误可能会导致程序占用大量内存,并最终导致系统资源的枯竭。
解决方法是在动态内存分配之后,始终使用free函数释放相关内存。
6.死循环死循环是指程序中出现无法结束的循环结构,导致程序无法继续执行下去。
这种错误通常是由于循环条件错误或循环体中没有跳出循环的语句造成的。
解决方法是仔细检查循环条件,并在循环体中使用终止循环的语句。
7.逻辑错误逻辑错误是指代码的逻辑顺序或条件判断错误,导致程序无法按照预期方式执行。
这种错误通常是由于逻辑表达式的错误或错误的计算顺序引起的。
解决方法是通过仔细分析代码,检查逻辑错误的可能性。
8.类型错误类型错误是指将不兼容的数据类型进行操作或赋值,导致程序产生意外的结果。
这种错误可能会导致数据截断、计算错误或未定义的行为。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.ambiguous symbol 'xxxxx'
二义性符号'xxxxxx'。两个或多个结构的某一域名相同,但具有的偏移,类型不同。在变量或表达式中引用该域而未带结构名时,将产生二义性,此时需修改某个域名或在引用时加上结构名。
参数表出现语法错误。函数调用的参数必须以逗号隔开,并以一右括号结束。若源文件中含有一个其后不是逗号也不是右括号的参数,则出错。
6.array bounds missing
数组的界限符"]"丢失。
7.array size too large
30.division by zero
除数为零。
31.do statement must have while
do语句中必须有while.
32.do-while statement missing (
这种错误是由于源文件中的某些表达式使得代码生成程序无法为它产生代码。这种表达式必须避免使用。
3.register allocation failure 存储器分配失效
这种错误指的是源文件行中的表达行听表达式太复杂,代码生成程序无法为它生成代码。此时应简化这种繁杂的表达式或干脆避免使用它。
使用include指令时,文件名格式不正确。
11.bad ifdef directive syntax
ifdef指令语法错误。#indef必须包含一个标识符(不能是任何其他东西)作为该指令体。
12.bad ifndef directive syntax
4.argument #missing name
参数表出现语法错误。函数调用的参数间必须以逗号隔开,并以一右括号结束。若源文件中含有一个其后不是逗号也不是右括号的参数,则出错。
5.argument list error
16.cannot modify a const object
不能修改一个常量对象。对定义为常量的对象进行不合法操作(如常量赋值)引起此类错误。
17.case outside of switch
);而对于同一类函数,也只能给出一种修饰符号(如cdecl,pascal 或interrupt).
23.constant expressin required
要求常量表达式。数组的大小必须是常量,此类错误通常是由于#define常量的拼写出错而引起的。
位字段长度语法错误。一个位字段必须是1-16位的常量表达式。
15.call of non-function
调用未定义函数。正被 调用的 函数未定义,通常是由于不正确的函数声明或函数名的拼写错误造成的。
一般错误
1.#operator not followed by macro argument name
#运算符后无宏变量名。宏定义中,#用于标识一宏变量名。"#"后必须跟一宏变量名。
2.'xxxxxx'not an argument
37.enumeration constant syntax error
枚举常量语法错误。赋给enum类型变量的表达式值不为常量。
38.error directive :xxx
error 指令:xxx。源文件处理#error指令时,显示该指令的信息。
1.bad call of in-line function 内部函数非法调用
在使用一个宏定义的内部函数时,没有正确调用。一个内部函数以双下划线(__)开始和结束。
2.irrducible expression tree 不可约表达式树
41.extra parameter in call
调用时出现多余的参数。
42.extra parameter in call to xxxxx
调用xxxxxx函数时出现了多余的参数。
do-while 语句中漏掉了"("
33.do-while statement missing )
do-while 语句中漏掉了")"
34.do-while statement missing ;
39.error writing output file
写输出文件出现错误。
40.expression syntax
表达式语法错误。当编译程序分析一表达式发现一严重错误时,出现此类错误不,通常是由于两个连续操作符,括号不匹配缺少括号,前一语句漏掉了分号等引起的。
说明必须给出类型或存储类。说明必须包含一个类型或一个存储类。
27.declartion syntax error
说明出现语法错误。
28.default outside of switch
数组太大。定义的数组太大,可用内存不够。
8.assembler statement too long
汇编语句太长。内部汇编语句不能超过480字节。
9.bad configuration file
19.case syntax error
case 语法错误。case 中包含了不正确的符号。
20.character constant too long
字符常量太长。字符常量只能是一个或两个字符长。
do-while 语句中漏掉了";"
35.duplicate case
case 后的常量表达式重复。
36.enum syntax error
enum 语法错误。enum说明的标识符表的格式不对。
ifndef 指令语法错误。
13.ad undef directive syntax
undef 指令指令语法错误。
14.bad file size syntax
for 语句缺少";"
46.for statement missing (
for 语句漏掉"("
47.function call missing )
pound statement missing
复合语句漏掉了在括号"}"。
22.conflicting type modifiers
类型修饰符冲突。对同一指针,只能指定一种变址修饰符(如near 或 far
43.file name too long
文件名太长。
44.for statement missing )
for 语句漏掉")"
45.for statement missing ;
配置文件不正确。turboc.cfg配置文件中包含不是合适命令行选择项的非注解文字。配置文件命令选择项必须以一短横线(-)开始。
10.bad file name format in include directive
default 在switch 外出现。
29.default directive needs an identifer
default 指令必须有一个标识符。#define后面的第一个非空格符必须是一个标识符,若编译程序发现一些其他字符,则出现本错误。
C语言编译出错信息详解_Airbeirberne waiting for
you来者不拒,照单全收.收下再挑,不好不要。 主页博客相册|个人档案 |好友 查看文章
C语言编译出错信息详解2007-08-02 10:25致命错误:
24.could not find 'xxxxxx.xxx'
找不到'xxxxxx.xxx'文件。
25.declaration missing
说明漏掉';'。
26.declaration needs type or storage class
case 出现在switch外。编译程序发现case 语句出现 在switch语句外面,通常是由于括号不匹配造成的。
18.case statement missing
case 语句漏掉。case 语句必须包含一以冒号终结的常量表达式。可能的原因是丢了冒号或在冒号前多了别的符号。