常见编译错误及常用标准库函数
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中单引号中左圆括号‘(’使用错误,两函数没有定义。
qt编译错误汇总
qt编译错误汇总qt编译错误汇总0.预备知识:编译-运行一个c/c++程序时,编译器只默认的去连接c 库,而很多的库不是标准库1.linux下#inlude 命令默认头文件搜索路径为/usr/include,qt 编程要用到的库qapplication库在usr/lib/qt-3.1/include下所以必须要用I增加路径。
如g++ -hello hello.cpp –I/usr/lib/qt-3.1/include 。
-I表示除了收索标准库,还要收索指定的额外头文件路径。
2.linux下的库,动态库为.so文件静态库为.a文件,编译运行时系统默认搜索的库为/usr/lib和/lib库。
linux下C库在/lib/libc.so.6路径下。
3.编译qt程序时要加上g++ -lqt …. lib库(相当于函数库集);-I:表示头文件额外搜索路径-L:表示要额外lib库搜索路径。
-l:表示表示指定具体的要连接(用到)的库(–lqt表示连接qt 库)(qt不在默认lib库路径下,而在/usr/lib/qt-3.1/lib下,所以必须额外指定)4.为了简化编译时的指定路径和库的麻烦,可以设置环境变量:CPLUS_INCLUDE_PA TH:设置头文件搜索路径。
例如:export CPLUS_INCLUDE_PA TH=/usr/lib/qt-3.1/include //LD_LIBRARY_PA TH:设置动态库搜索路径。
例如:export LD_LIBRARY_PA TH =/usr/lib/qt-3.1/lib //注意qt比较特殊直接用LIBRARY_PAHT;在终端下输入env 和set命令可以显示环境变量。
5.qt下编译可用简便方法运行qmake –project 产生一个pro工程文件。
运行qmake 产生Makefile运行make 产生可执行程序6.查找一个文件用命令:which qmake7. qwidget.h是可视化窗口类。
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 — 不允许使用行间汇编
常见编译错误解析
常见编译器错误提示(四)
Enumeration constant syntax error -----------------枚举常数语法错误 -----------------枚举常数语法错误 Error directive :xxx ------------------------错误的编译预处理命令 ------------------------错误的编译预处理命令 Error writing output file ---------------------写输出文件错误 ---------------------写输出文件错误 Expression syntax error -----------------------表达式语法错误 -----------------------表达式语法错误 Extra parameter in call ------------------------调用时出现多余错误 ------------------------调用时出现多余错误 File name too long ----------------文件名太长 ----------------文件名太长 Function call missing -----------------函数调用缺少右括号 -----------------函数调用缺少右括号 Fuction definition out of place ------------------函数定义位置错误 ------------------函数定义位置错误 Fuction should return a value ------------------函数必需返回一个值 ------------------函数必需返回一个值 Goto statement missing label ------------------ Goto语句没有标号 Goto语句没有标号
(完整word版)C语言程序编译常见错误对照
error C2117: 'xxx' : array bounds overflow
中文对照:(编译Байду номын сангаас误)数组xxx边界溢出
分析:一般是字符数组初始化时字符串长度大于字符数组长度,例如“char str[4] = "abcd";”
中文对照:(编译错误)重复定义形式参数xxx
分析:函数首部中的形式参数不能在函数体中再次被定义
error C2084: function 'xxx' already has a body
中文对照:(编译错误)已定义函数xxx
分析:在VC++早期版本中函数不能重名,6.0版本中支持函数的重载,函数名可以相同但参数不一样
error C2048: more than one default
中文对照:(编译错误)default语句多于一个
分析:switch语句中只能有一个default,删去多余的default
error C2050: switch expression not integral
中文对照:(编译错误)switch表达式不是整型的
error C2017: illegal escape sequence
中文对照:(编译错误)转义字符非法
分析:一般是转义字符位于' '或" "之外,例如“char error = ' '\n;”
error C2018: unknown character '0xhh'
c++程序编译常见错误
一、常见编译错误:
二、编译注意事项:
1.编译器所报告的第一个错误位置往往是有效的,但是报告的错误内容未必正确。
比如第二次编译时报告的错误是“在小于号之前缺少了逗号”,而事实上问题是for语句中应该使用分号。
所以,报告的错误内容只能参考,却不能完全相信。
2.编译器报告的错误数目与实际错误数目未必符合。
甚至第一次改正一个错误后,
错误数反而增加了。
所以,报告的错误数目不能正确描述实际的错误规模。
3.编译器报告的警告也应当被重视。
有些人认为即使程序存在警告,但是它能正常
执行,所以警告可以被忽视。
这种想法是错误的。
如果一个程序是完美的,为什么编译器还要给出警告呢?警告的存在就说明了这个程序有些地方还不符合正确的语法。
4.I:\program\vc\book\11_3_1\main.cpp(5)括号中的5表示错误在程序的第5行。
不
需要自己去数行数,只需要双击这个错误就能到达对应的行。
编译错误名词解释
编译错误名词解释编译错误是计算机程序的一种常见错误,它可能会导致程序突然停止运行、出现显示闪烁或无法正常运行等状况。
编译错误指的是在将程序转换为可执行代码时可能出现的错误,这也是编译器为何重要的原因之一。
下面就来讨论几种常见的编译错误以及它们的解决办法。
语法错误:语法错误是最常见的编译错误,它是指语言语法的错误,比如它们的标点符号,句子结构,函数声明,变量声明等是错误的,需要根据编程语言的语法规则来更正它们的错误。
类型错误:类型错误是变量和数据类型不匹配所导致的一种编译错误。
比如在将整数值转换为浮点数值时,应该使用float函数,否则会出现类型错误。
此外,这类错误还会出现在在使用不匹配的变量或类型进行比较或运算时。
解决类型错误的方法是确保所有变量和值的类型都是正确的,而且必须匹配。
标签错误:标签错误是指在程序中使用错误的标签,这些错误的标签会导致程序无法执行,因为编译器无法判断要执行的代码的准确位置。
解决标签错误的方法是,需要对程序代码进行检查,如果发现标签有问题,要及时调整和修改。
外部应用程序引用错误:外部应用程序引用错误是指程序中引用了不存在的外部应用程序,这样编译器就会报告错误,因为它找不到要引用的程序。
解决方法是安装引用的外部应用程序,或者将程序中的引用从外部应用程序移除掉。
变量重定义错误:变量重定义错误是指程序中变量被重复定义,比如在同一代码段中定义两个同名变量,编译器会报错,说明程序存在变量重复定义的问题。
解决方法是在程序中查找相同名字的变量,将其中一个变量名称更改。
语义错误:语义错误是指程序中出现的语义错误,这种错误主要是由于编程者在写程序时使用了错误的语法语义而造成的,它会导致程序的运行结果不正确。
解决方法是检查程序代码,确定错误的语义,然后更正错误的语句。
以上就是编译错误的几种常见形式,并简要介绍了它们的解决办法。
了解了这些信息,编程者就可以更好地识别编程中可能出现的编译错误,从而可以更有效地解决编译问题,让自己的程序代码更加完美且更具有可维护性。
如何解决C语言中的编译错误与警告
如何解决C语言中的编译错误与警告C语言是一种广泛应用于系统编程和嵌入式开发的编程语言,它的编译过程中常常会出现各种错误和警告。
这些错误和警告可能会导致程序无法正确编译或者在运行时出现问题。
因此,解决C语言中的编译错误与警告是每个程序员都需要掌握的重要技能。
本文将介绍一些常见的编译错误和警告,并提供一些解决方法。
一、理解编译错误和警告的含义在解决编译错误和警告之前,我们首先需要理解它们的含义。
编译错误是指在编译过程中发现的语法错误或者逻辑错误,这些错误会导致程序无法正确编译。
编译警告是指在编译过程中发现的一些潜在的问题,虽然不会导致程序无法编译,但可能会导致程序在运行时出现问题。
二、常见的编译错误和警告1. 语法错误:语法错误是最常见的编译错误之一,它通常是由于编程人员在编写代码时遗漏了分号、括号不匹配等导致的。
解决语法错误的方法是仔细检查代码,确保语法正确。
2. 未声明的标识符:当使用一个未声明的标识符时,编译器会报错。
解决这个问题的方法是在使用标识符之前先进行声明或者引入相应的头文件。
3. 类型不匹配:类型不匹配是指在赋值或者函数调用过程中,变量的类型与期望的类型不一致。
解决这个问题的方法是检查变量的类型,并进行相应的类型转换。
4. 未使用的变量:编译器会对未使用的变量发出警告,这可能是由于代码中存在一些无用的变量。
解决这个问题的方法是删除未使用的变量或者对其进行使用。
5. 未初始化的变量:未初始化的变量可能导致程序在运行时出现未定义的行为。
解决这个问题的方法是在使用变量之前先进行初始化。
6. 函数返回值不匹配:函数的返回值类型与函数定义时声明的返回值类型不一致会导致编译错误。
解决这个问题的方法是检查函数的返回值类型,并进行相应的修改。
7. 潜在的内存泄漏:编译器可能会对未释放的内存发出警告,这可能会导致内存泄漏。
解决这个问题的方法是在使用完内存后及时释放。
三、解决编译错误和警告的方法1. 仔细阅读编译错误和警告信息:编译器通常会提供详细的错误和警告信息,我们应该仔细阅读这些信息,找出问题所在。
C语言编译常见错误提示
C语言编译常见错误提示C语言编译常见错误提示Ambiguous operators need parentheses 不明确的运算需要括号Ambiguous symbol ''xxx'' 不明确的符号Argument list syntax error 参数表语法错误Array bounds missing 丢失数组界限符Array size too large 数组尺寸太大Bad character in parameters 参数中有不适当的字符Bad file name format in include directive 包含命令中文件名格式不正确Call of non-function 调用未定义的函数Call to function with no prototype 调用函数时没有函数说明Cannot modify a const object 不允许修改常量对象Case outside of switch 漏掉了case 语句Case syntax error Case 语法错误Code has no effect 代码不可述不可能执行到Compound statement missing{ 分程序漏掉"{"Conflicting type modifiers 不明确的类型说明符Constant expression required 要求常量表达式Constant out of range in comparison 在比较中常量超出范围Conversion may lose significant digits 转换时会丢失意义的数Could not find file ''xxx'' 找不到XXX文件Declaration missing ; 说明缺少";"Declaration syntax error 说明中出现语法错误Default outside of switch Default出现在switch语句之外Define directive needs an identifier define命令需要标识符Division by zero 用零作除数Do statement must have while Do语句中需要while部分Enumsyntax error 枚举类型语法错误Enumeration constant syntax error 枚举常数语法错误Error directive: xxx 错误的编译预处理命令xxxError writing output file 写输出文件错误Expression syntax error 表达式语法错误Extra parameter in call 调用时出现多余参数File name too long 文件名太长Function call missing ) 函数调用缺少右括号Function definition out of place 函数定义位置错误Function should return a value 函数必需返回一个值Hexadecimal or octal constant too large 16进制或8进制常数太大Illegal character ''x'' 非法字符xIllegal initialization 非法的初始化Illegal octal digit 非法的8进制数Illegal pointer subtraction 非法的指针相减Illegal structure operation 非法的结构体操作Illegal use of floating point 非法的浮点运算Illegal use of pointer 指针使用非法Improper use of a typedef symbol 类型定义符号使用不恰当In-line assembly not allowed 不允许使用行间汇编Incompatible storage class 存储类别不相容Incompatible type conversion 不相容的类型转换Incorrect number format 错误的数据格式Incorrect use of default default使用不当Invalid indirection 无效的间接运算Invalid pointer addition 指针相加无效Irreducible expression tree 无法执行的表达式运算Lvalue required 需要左值Macro argument syntax error 宏参数语法错误Macro expansion too long 宏的扩展以后太长Mismatched number of parameters in definition 定义中参数个数不匹配Misplaced break 此处不应出现break语句Misplaced continue 此处不应出现continue语句Misplaced decimal point 此处不应出现小数点Misplaced else 此处不应出现elseMust be addressable 必须是可以编址的Must take address of memory location 必须存储定位的地址No declaration for function ''xxx'' 没有函数xxx的说明No stack 缺少堆栈No type information 没有类型信息Non-portable pointer assignment 不可移动的指针赋值Non-portable pointer comparison 不可移动的指针比较 Non-portable pointer conversion 不可移动的指针转换Not a valid expression format type 不合法的表达式格式 Not an allowed type 不允许使用的类型 Numeric constant too large 数值常太大 Out of memory 内存不够用Parameter ''xxx'' is never used 能数xxx 没有用到Pointer required on left side of -> 符号->的左边必须是指针Possible use of ''xxx'' before definition 定义之前就使用了xxx Possibly incorrect assignment 赋值可能不正确Redeclaration of ''xxx'' 重复定义了xxxRedefinition of ''xxx'' is not identical xxx 的两次定义不一致Register allocation failure 寄存器定址失败Size of structure or array not known 结构体或数组大小不确定Statement missing ; 语句后缺少";"Structure or union syntax error 结构体或联合体语法错误Structure size too large 结构体尺寸太大 Sub scripting missing ] 下标缺少右方括号Superfluous & with function or array 函数或数组中有多余的"&"Suspicious pointer conversion 可疑的指针转换Symbol limit exceeded 符号超限Too few parameters in call 函数调用时的实参太少Too many default cases Default 太多(switch 语句中一个) T oo many error or warning messages 错误或警告信息太多Too many type in declaration 说明中类型太多Too much auto memory in function 函数用到局部存储太多 Too much global data defined in file 文件中全局数据太多Two consecutive dots 两个连续的句点Type mismatch in parameter xxx 参数xxx 类型不匹配Type mismatch in redeclaration of ''xxx'' xxx 重定义的类型不匹配Unable to create output file ''xxx'' 无法建立输出文件xxx Unable to open include file ''xxx'' 无法打开被包含的文件xxx Unable to open input file ''xxx'' 无法打开输入文件xxx Undefined label ''xxx'' 没有定义的标号xxx Undefined structure ''xxx'' 没有定义的结构xxx Undefined symbol ''xxx'' 没有定义的符号xxx Unexpected end of file in comment started on line xxx 从xxx 行开始的注释尚未结束文件不能结束Unexpected end of file in conditional started on line xxx 从xxx 开始的条件语句尚未结束文件不能结束Unknown assemble instruction 未知的汇编结构 Unknown option 未知的操作Unknown preprocessor directive: ''xxx'' 不认识的预处理命令Unreachable code 无路可达的代码Unterminated string or character constant 字符串缺少引号User break 用户强行中断了程序Void functions may not return a value Void 类型的函数不应有返回值Wrong number of arguments 调用函数的参数数目错 ''xxx'' not an argument xxx 不是参数''xxx'' not part of structure xxx 不是结构体的一部分xxx statement missing ( xxx 语句缺少左括号 xxx statement missing ) xxx 语句缺少右括号 xxx statement missing ; xxx 缺少分号xxx'' declared but never used 说明了xxx 但没有使用xxx'' is assigned a value which is never used 给xxx 赋了值但未用过Zero length structure 结构体的长度为零参考网址:/f?kz=369371298/~jlli/c/c-errors.html/roverlibertine/article/details/1858736 百度在线翻译 谷歌在线翻译C语言错误提示常用词(完善中…)英文中文英文中文addition 加法incorrect 不正确的address 地址initialization, initializer 初始化ambiguous 不明确的,有歧义的input 输入argument 参数invalid 无效的array 数组line 行assign 分配list 列表bit (二进制的)位lvalue 左值(可置于赋值号左边的数据,如变量)bound (数组的)边界macro 宏call 调用(函数)memory 内存character 字符mismatched 不匹配的command 命令misplaced 错位的comment 注释missing 缺少const, constant 常量modify 修改conversion 转换name 名称create 建立(文件等)object 对象decimal 十进制的octal 八进制decimal point 小数点operation,operate 操作declare, declaration 声明out of range 超出范围digit 数字output 输出directive 指令parameter 参数division 除法parenthesis,parentheses 圆括号dot 点pointer 指针duplicate 不唯一的requires 要求enum,enumeration 枚举statement 语句execute 执行(命令,程序)structure 结构体expression 表达式subscripting 下标extra 多余的subtraction 减法file 文件symbol 符号format 格式syntax error 语法错误function 函数type 类型hexadecimal 十六进制undefined 未定义的identifier 标识符unexpected 意外的illegal 非法的unknown 未知的improper 不恰当的value 值incompatible 不相容的。
编译时的常见错误
一、编译时的常见错误1. 数据类型错误。
此类错误是初学者编程时的常见现象, 下面是一些要引起注意的错误:(1) 所有变量和常量必须要加以说明。
(2) 变量只能赋给相同类型的数据。
(3) 对scanf()语句, 用户可能输入错误类型的数据项, 这将导致运行时出错, 并报出错信息。
为避免这样的错误出现, 你就提示用户输入正确类型的数据。
(4) 在执行算术运算时要注意:a. 根据语法规则书写双精度数字。
要写0.5, 而不是写.5; 要写1.0, 而不是1。
尽管C语言会自动地把整型转换成双精度型, 但书写双精度型是个好习惯。
让C语言为你做强行转换这是一种效率不高的程序设计风格。
这有可能导致转换产生错误。
b. 不要用0除。
这是一个灾难性的错误, 它会导致程序失败, 不管C 语言的什么版本, 都是如此, 执行除法运算要特别小心。
c. 确保所有的双精度数(包括那些程序输入用的双精度数) 是在实数范围之内。
d. 所有整数必须在整数允许的范围内。
这适用于所有计算结果, 包括中间结果。
2. 将函数后面的";"忘掉。
此时错误提示色棒将停在该语句下的一行, 并显示:Statement missing in function <函数名>3. 给宏指令如#include, #define等语句尾加了";"号。
4. "{"和"}"、"("和")"、"/*"和"*/"不匹配。
引时色棒将位于错误所在的行, 并提示出有关丢掉括号的信息。
5. 没有用#include指令说明头文件, 错误信息提示有关该函数所使用的参数未定义。
6. 使用了Turbo C保留关键字作为标识符, 此时将提示定义了太多数据类型。
7. 将定义变量语句放在了执行语句后面。
此时会提示语法错误。
8. 使用了未定义的变量, 此时屏幕显示:Undefined symbol '<变量名>' in function <函数名>9. 警告错误太多。
VC++常见的错误及其解决方法
VC++中常见的编译错误及其解决方第一部分编译错误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)整体看待的数字。
两个单引号之间不加任何内容会引发如下错误:error C2137: empty cha racter constant。
3.error C2018: unknown character '0x##'编号:C2018 直译:未知字符…0x##‟。
错误分析:0x##是字符ASC码的16进制表示法。
这里说的未知字符,通常是指全角符号、字母、数字,或者直接输入了汉字。
如果全角字符和汉字用双引号包含起来,则成为字符串常量的一部分,是不会引发这个错误的。
4.error C2041: illegal digit '#' for base '8'编号:C2141 直译:在八进制中出现了非法的数字…#‟(这个数字#通常是8或者9)。
十大编译错误及解析
报错位置
19
Lvalue repuired
Lvalue:左值
20
Lvalue repuired
解析:赋值请求;赋值运算符的左边必须 是一个地址表达式,包括数值变量、指针变 量、结构引用域、间接指针和数组元素。
句后跟多个操作语句,但未用花括号括起来,另外还可 能是由于else多余,还有可能由于多余的分号或漏写了 大括号及前面的if语句出现语法错误引起的。
错误范例:
void main()
{
float x;
double y;
scanf("%f",&x); if(x<3) ; y=sin(x);
报错位置
else if(x==3) y=x;
1
Statement missing ;
单词解释: Statement:[‘steitmənt] n. 【计算机】语句,
计算机程序指令 miss:[mis] v. 漏掉遗失
2
Statement missing ;
解析:语句缺少分号;编译程序发现一表达式 语句后面没有分号。注意是表达式语句。
报错位置
} 3
Declaration syntax error
Declaration:[dekləreiʃən] n. 声明 syntax:[‘sintæks] n. 句法;句法规则
4
Declaration syntax error
解析:声明出现语法错误;在源文件中, 某个声明丢失了某些符号或有多余的符号。 注意是声明部分,而一般情况下也是在声 明部分末尾未加分号“ ;”。
3、C++编译时常见的几种错误类型
3、C++编译时常见的⼏种错误类型编译器的⼀部分⼯作是寻找程序⽂本中的错误。
编译器没有能⼒检查⼀个程序是否按照作者的意图⼯作,但可以检查形式上的错误。
以下列出了⼀些常见的编译器可以检查出来的错误。
语法错误(syntax error):程序员犯了语⾔⽂法上的错误。
以下是⼀些常见的语法错误://错误:main的参数列表漏掉了)int main({//错误:endl后使⽤了冒号⽽不是分号cout<<"hello C++"<<endl://错误:字符串漏掉了引号cout << hello C++ << endl;//错误:漏掉输出运算符cout << "hello C++"endl;//错误:return语句漏掉了分号return0}类型错误(type error):C++中每⼀个数据项都有其类型,⽐如10 是⼀个int型数据,带有双引号标记如 “hello”就是⼀个string(字符串)类型的数据。
如果向⼀个期望参数为int的函数传递了⼀个string类型的常量,编译就会报错;声明错误(declaration error):C++程序中每⼀个名字都要先声明后使⽤。
名字声明失败通常会导致⼀条错误信息,以下是⼀个常见的声明错误的例⼦:int main(){int v1 = 0, v2 = 0;cin >> v >> v2; //使⽤的“v”⽽⾮“v1”cout << v1 + v2 << endl;return0;}错误信息通常包含⾏号和⼀条简短描述,描述了编译器认为的我们所犯的错误。
按照报告逐个修改错误是⼀个好习惯,因为单个错误通常具有传递效应,导致编辑器在后⾯报告⽐实际数量多的错误;另外,每修正⼀个错误就编译⼀遍,或者修正了⼀⼩部分明显的错误之后重新编译,这就是所谓的“编辑-编译-调试”(edit-complit-debug)周期;。
C语言 编译出错信息一览表
附录二编译出错信息一览表Turbo C编译器查出的源程序错误分为3类:严重错误、一般错误和警告。
严重错误通常是内部编译出错,一般很少出现。
一旦发生严重错误,编译立即停止。
一般错误是指程序的语法错误、磁盘或内存存取错误或命令行错误等。
警告指出一些值得怀疑的情况,而这些情况本身又可以合理地作为源程序的一部分。
它们不阻止编译的进行,只是产生警告信息。
例如,在Turbo C中,当编译时,编译时信息窗口会显示如下信息:Error xxx Undefined symbol ‘x’in function main这是致命性的错误:在main函数中,xxx行的符号‘x’没定义。
这种错误只有修改了才能编译成功,也才能做随后的链接和运行功能。
Warning xxx Possible use of ‘x’ before definition in …这是警告性的信息:在xxx中xxx行在定义前可能使用了变量‘x’。
这种信息不用修改也可以做随后的链接和运行功能,但可能会产生错误也可能不会。
在编译时,编译程序首先输出这3类错误信息,然后指出源文件名和发现出错的行号,最后输出信息的内容。
下面按字母顺序分别列出这3类错误信息。
并对每一条信息进行解释,指出产生的原因和纠正方法。
经常浏览这些出错信息,不仅可以在程序调试时快速查出错误原因和位置,而且有助于正确地掌握C语言语法知识。
1.严重错误Bad call of inline function (内部函数的不合理调用)不正确地调用一个宏定义的内部函数。
一个内部函数以两个下划线(_ _)开始和结束。
Irreducible expression tree (不可约表达式树)源文件中的表达式使得代码生成程序无法为其产生代码。
如果编译时总遇到这种错误,应该通知Borland公司。
Register alloction failure (存储器分配失败)这种错误指源文件中的表达式太复杂,代码生成程序无法为它生成代码。
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 use of ‘XXX’before definition 表达式中使用了未赋值的变量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结构之外,一般是因为花括号不匹配而引起的。
常见编译错误及常用标准库函数
常见编译错误及常用标准库函数附录A 常见编译错误和警告1. fatal error C1010: unexpected end of file while looking for precompiled header directive。
寻找预编译头文件路径时遇到了不该遇到的文件尾。
(一般是因为误删了包含命令#include "stdafx.h")2. fatal error C1083: Cannot open include file: '***.h': No such file or directory不能打开包含文件'***.h': 没有这样的文件或目录3. error C2018: unknown character '0xa3'不认识的字符'0xa3'(一般是代码中出现了汉字或中文标点符号)4. error C2039: '****' : is not a member of '####''****' 不是'####' 结构体的一个成员(一般是因为错误引用结构体成员)5. error C2057: expected constant expression期望是常量表达式(一般出现在switch语句的case分支中)6. error C2061: syntax error : identifier '***'语法错误: 标识符’***’(一般是因为未定义形式参数的数据类型)7. error C2065: '****' : undeclared identifier'****': 未声明过的标识符8. error C2082: redefinition of formal parameter '****'重复定义形式参数'****'9. error C2133: '****' : unknown size'****' : 不知道其大小(一般是因为数组未定义长度)10. error C2143: syntax error: missing ';' before '{'句法错误:'{' 前缺少';'11. error C2146: syntax error : missing ';' before identifier '****'句法错误:在'****'前缺少';'12. error C2181: illegal else without matching if非法的else,没有与之匹配的if(一般是因为if 与else不配对)13. error C2196: case value '****' already usedcase值'****'已经使用过(一般出现在switch语句的case分支中)14. error C2296: '%' : illegal, left operand has type 'float''%' : 非法,左操作数应为'float'类型15. error C2297: '%' : illegal, right operand has type 'float''%' : 非法,右操作数应为'float'类型16. error C2562: '****' : 'void' function returning a value'****': 无返回值的函数返回了一个值17. error C2660: '****' : function does not take 2 parameters'****'函数不能传递2个参数18. error C2466: cannot allocate an array of constant size 0不能分配一个大小为0的数组(一般是因为数组未定义长度)19. error C4716: '****' : must return a value'****' 函数必须返回一个值(一般是定义返回值的函数体内未写return语句) 20. warning C4035: '****': no return value '****'函数没有返回值21. warning C4244:'return':conversion from 'float' to 'int',possible loss of data'return': 从'float' 转换为'int',可能丢失数据22. warning C4553: '= =' : operator has no effect; did you intend '='?没有效果的运算符“= =”; 是否改为“=”?23. warning C4700: local variable '****' used without having been initialized局部变量'****'没有初始化就使用24. error C4716: '****' : must return a value'****'函数必须返回一个值25. LINK : fatal error LNK1168: cannot open Debug/P1.exefor writing连接错误:不能打开P1.exe文件,以改写内容(一般是因为P1.Exe还在运行,未关闭)附录B 常用标准库函数一. stdio.h中包括的常用函数1. fclose 关闭文件原型:int fclose(FILE *stream);功能:关闭由stream指向的流。
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 use of …XXX‟ before definition表达式中使用了未赋值的变量?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结构之外,一般是因为花括号不匹配而引起的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
附录 A 常见编译错误和警告1. fatal error C1010: unexpected end of file while looking for precompiled header directive 寻找预编译头文件路径时遇到了不该遇到的文件尾。
(一般是因为误删了包含命令#include "stdafx.h")2. fatal error C1083: Cannot open include file: '***.h': No such file or directory 不能打开包含文件'***.h': 没有这样的文件或目录3. error C2018: unknown character '0xa3'不认识的字符’0xa3'(—般是代码中出现了汉字或中文标点符号)4. error C2039: '****' : is not a member of '####''****' 不是'####' 结构体的一个成员(一般是因为错误引用结构体成员)5. error C2057: expected constant expression 期望是常量表达式(一般出现在switch 语句的case分支中)6. error C2061: syntax error : identifier '***'语法错误: 标识符 '*** '(一般是因为未定义形式参数的数据类型)7. error C2065: '****' : undeclared identifier'****': 未声明过的标识符8. error C2082: redefinition of formal parameter '****' 重复定义形式参数'****'9. error C2133: '****' : unknown size'****' : 不知道其大小(一般是因为数组未定义长度)10. error C2143: syntax error: missing ';' before '{' 句法错误:'{' 前缺少';'11. error C2146: syntax error : missing ';' before identifier '****' 句法错误:在'****' 前缺少';'12. error C2181: illegal else without matching if非法的else,没有与之匹配的if(一般是因为if与else不配对)13. error C2196: case value '****' already usedcase值'****'已经使用过(一般出现在switch语句的case分支中)14. error C2296: '%' : illegal, left operand has type 'float''%':非法,左操作数应为’float'类型15. error C2297: '%' : illegal, right operand has type 'float''%':非法,右操作数应为'float'类型16. error C2562: '****' : 'void' function returning a value'****': 无返回值的函数返回了一个值17. error C2660: '****' : function does not take 2 parameters'****' 函数不能传递2 个参数18. error C2466: cannot allocate an array of constant size 0不能分配一个大小为0 的数组(一般是因为数组未定义长度)19. error C4716: '****' : must return a value'****' 函数必须返回一个值(一般是定义返回值的函数体内未写return 语句)20. warning C4035: '****': no return value'****' 函数没有返回值21. warning C4244:'return':conversion from 'float' to 'int',possible loss of data'return':从'float'转换为’int',可能丢失数据22. warning C4553: '= =' : operator has no effect; did you intend '='? 没有效果的运算符“= =”是;否改为“=”?23. warning C4700: local variable '****' used without having been initialized 局部变量'****' 没有初始化就使用24. error C4716: '****' : must return a value'****' 函数必须返回一个值25. LINK : fatal error LNK1168: cannot open Debug/P1.exe for writing连接错误:不能打开P1.exe文件,以改写内容(一般是因为P1.Exe 还在运行,未关闭)附录 B 常用标准库函数一. stdio.h 中包括的常用函数1. fclose 关闭文件原型:int fclose(FILE *stream);功能:关闭由stream指向的流。
清洗保留在流缓冲区内的任何未写的输出。
如果是自动分配,那么就释放缓冲区。
返回:如果成功,就返回零。
如果检测到错误,就返回EOF。
2. feof 检测文件末尾原型:int feof(FILE *stream);返回:如果为stream指向的流设置了文件尾指示器,则返回非零值;否则返回零。
3. ferror 检测文件错误原型:int ferror(FILE *stream);返回:如果为stream指向的流设置了文件错误指示器,则返回非零值;否则返回零。
4. fflush 清洗文件缓冲区原型:int fflush(FILE *stream);功能:把任何未写入的数据写到和stream相关的缓冲区中,其中stream指向用于输出或更新的已打开的流。
如果stream是空指针,那么flush函数清洗存储在缓冲区中的所有未写入的流。
返回:如果成功就返回零。
如果检测到错误,就返回EOF。
5. fgetc 从文件中读取字符原型:int fgetc(FILE *stream);功能:从stream指向的流中读取字符。
返回:读到的字符。
如果fgetc函数遇到流的末尾,则设置流的文件尾指示器并且返回EOF。
如果读取发生错误,fgetc函数设置流的错误指示器并且返回EOF。
6. fgetpos 获得文件位置原型:int fgetpos(FILE *stream, fpos_t *pos);功能:把stream指向的流的当前位置存储到pos指向的对象中。
返回:如果成功就返回零。
如果调用失败,则返回非零值,并且把由实现定义的错误码存储到errno 中。
7. fgets 从文件中读取字符串原型:char *fgets(char *s, int n, FILE *stream);功能:从stream指向的流中读取字符,并且把读入的字符存储到s指向的数组中。
遇到第一个换行符已经读取了n-1个字符,或到了文件末尾时,读取操作都会停止。
fgets函数会在字符串后添加一个空字符。
返回:s (指向数组的指针),如果读取操作错误或fgets函数在存储任何字符之前遇到了流的末尾,都会返回空指针。
8. fopen 打开文件原型:FILE *fopen(const char *filename, const char *mode);功能:打开文件以及和它相关的流,文件名是由file name指向的。
mode说明文件打开的方式。
返回:文件指针。
在执行下一次关于文件的操作时会用到此指针。
如果无法打开文件则返回空指针。
9. fprintf 格式化写文件原型:int fprintf(FILE *stream, const char *format, ...);功能:向stream指旨向的流写输出。
format指向的字符串说明了后续参数显示的格式。
返回:写入的字符数量。
如果发生错误就返回负值。
10. fputc 向文件写字符原型:int fputc(int c, FILE *stream);功能:把字符c写到stream指向的流中。
返回:c (写入的字符),如果写发生错误,fputc函数会为stream设置错误指示器,并且返回EOF 。
11. fputs 向文件写字符串原型:int fputs(const char *s, FILE *stream);功能:把s扌旨向的字符串写到stream指向的流中。
返回:如果成功,返回非负值。
如果写发生错误,则返回EOF。
12. fread 从文件读块原型:size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);功能:试着从stream 指向的流中读取nmemb 个元素,每个元素大小为size 个字节,并且把读入的元素存储到ptr 指向的数组中。
返回:实际读入的元素(不是字符)数量。
如果fread 遇到文件末尾或检测到读取错误,那么此数将会小于nmemb。
如果nmemb或size为零,则返回值为零。
13. freopen 重新打开文件原型:FILE *freopen(const char *filename, const char *mode, FILE *stream);功能:在freopen 函数关闭和stream 相关的文件后,打开名为filename 且与stream 相关的文件。