C语言常见错误分析汇总_第1页
C语言常见错误分析汇总_第2页
C语言常见错误分析汇总_第3页
C语言常见错误分析汇总_第4页
C语言常见错误分析汇总_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言常见错误分析汇总C言语罕见同伴剖析汇总1、正在一个工程里呈现两个main函数时3.obj : error LNK2005: _main already defined in file1.objDebug/HELLO.exe : fatal error LNK1169: one or more multiply defined symbols found 那个便是道,您的main函数重界说了。您瞧瞧是否您的工程内里,包孕了不少个有main函数的文件?2、fatal error C1010: unexpected end of file while looking for precompil

2、ed header directive呈现那个同伴的本果是,工程范例建错了,应当取舍win 32 console application3、拼写同伴(1)#include void main()printf(doeifweofupwp);fatal error C1083: Cannot open include file: stido.h: No such file or directory(2)#inculde void main()printf(doeifweofupwp);fatal error C1021: invalid preprocessor command inculde(有

3、效的预编译下令inculde)(3)#include void mian() /main拼写错了printf(doeifweofupwp);error LNK2001: unresolved external symbol _mainDebug/HELLO.exe : fatal error LNK1120: 1 unresolved externals您用vc建了一个把持台步伐,它的进心函数应当是main.4、(1)誊写标识符时,疏忽了年夜小写字母的区分。main()int a=5;printf(%d,A);error C2065: A : undeclared identifier(A:

4、是出有界说/申明的标示符)编译步伐把a以及A以为是两个没有同的变量名,而隐示堕落疑息。C以为年夜写字母以及小写字母是两个没有同的字符。习性上,标记常量名用年夜写,变量名用小写暗示,以删减可读性。5、疏忽了变量的范例,举行了没有开法的运算。main()float a,b;printf(%d,a%b);error C2296: % : illegal, left operand has type float error C2297: % : illegal, right operand has type float %是供余运算,患上到a/b的整余数。整型变量a以及b能够举行供余运算,而真型变量则

5、没有同意举行“供余”运算。6、将字符常量取字符串常量搅浑。char c;c=a;warning C4047: = : char differs in levels of indirection from char 2 正在那里便搅浑了字符常量取字符串常量,字符常量是由一对于单引号括起去的单个字符,字符串常量是一对于单引号括起去的字符序列。C划定以“”做字符串停止标记,它是由体系主动减上的,以是字符串“a”真际上包孕两个字符:a以及,而把它赋给一个字符变量是没有止的。7、疏忽了“=”取“=”的区分。正在很多下级言语中,用“=”标记做为闭系运算符“即是”。如正在BASIC步伐中能够写if (a=3

6、) then 但C言语中,“=”是赋值运算符,“=”是闭系运算符。如:if (a=3) a=b;前者是举行对比,a是不是以及3相称,后者暗示假如a以及3相称,把b值赋给a。因为习性成绩,初教者常常会犯那样的同伴。8、记记减分号。分号是C语句中没有可短少的一全体,语句终尾必需有分号。#include void main()int a,b;a=1b=2printf(%d,%d,a,b);error syntax error : missing ; before identifier berror C2146: syntax error : missing ; before identifier p

7、rintf编译时,编译步伐正在“a=1”前面出收现分号,便把下一止“b=2”也做为上一止语句的一全体,那便会呈现语法同伴。改错时,偶然正在被指出有错的一止中已收现同伴,便必要瞧一下上一止是不是遗漏了分号。 z=x+y;t=z/100;printf(%f,t); /此处的分号没有能省略对于于复开语句去道,最初一个语句中最初的分号没有能疏忽没有写(那是以及PASCAL没有同的)。9、多减了分号。对于于一个复开语句,如: z=x+y;t=z/100;printf(%f,t); /左花括号后没有必要减分号复开语句的左花括号后没有应再减分号,可则将会绘蛇加足。又如:if (a%3=0) ;I+;本是假如

8、3整除了a,则I减1。但因为if (a%3=0)后多减了分号,则if语句到此停止,步伐将实行I+语句,即没有论3是不是整除了a,I皆将主动减1。那种隐露的同伴编译体系其实不会提堕落误疑息或者告诫疑息。再如:for (I=0;Iscanf(%d,&x);printf(%d,x);本意是前后输出5个数,每一输出一个数后再将它输入。因为for()后多减了一个分号,使轮回体变成空语句,此时只能输出一个数并输入它。10、LINK : fatal error LNK1168: cannot open Debug/P1.exe for writing毗连同伴:没有能挨开P1.exe文件,以改写内容。(一样平

9、常是P1.Exe借正在运转,已闭闭,闭闭运转界里便可)11、warning C4553: = = : operator has no effect; did you intend =?出无效果的运算符“= =”;是不是改成“=”?12、warning C4700: local variable bReset used without having been initialized全部变量“bReset”出有初初化便利用。13、error C2021: unknown character 0xa3没有了解的字符0xa3。(一样平常是汉字或者中文标面标记)14.输出变量时记记减天址运算符“&”。i

10、nt a,b;scanf(%d%d,a,b);那是没有开法的。Scanf函数的做用是:依照a、b正在内存的天址将a、b的值存出来。“&a”指a正在内存中的天址。若运转步伐,则正在输出数据后步伐会末行。15.输出数据的圆式取请求没有符。scanf(%d%d,&a,&b);输出时,没有能用逗号做两个数据间的分开符,以下里输出没有开法:3,4输出数据时,正在两个数据之间以一个或者多个空格距离,也可用回车键,跳格键tab。scanf(%d,%d,&a,&b);C划定:假如正在“体例把持”字符串中除了了体例道明之外借有别的字符,则正在输出数据时应输出取那些字符不异的字符。上面输出是开法的:3,4此时没有

11、用逗号而用空格或者别的字符是没有对于的。3 4 3:4又如:scanf(a=%d,b=%d,&a,&b);输出应如下列情势:a=3,b=416.输出字符的体例取请求没有分歧。正在用“%c”体例输出字符时,“空格字符”以及“本义字符”皆做为无效字符输出。scanf(%c%c%c,&c1,&c2,&c3);如输出a b c字符“a”收给c1,字符“ ”收给c2,字符“b”收给c3,果为%c只有供读进一个字符,前面没有必要用空格做为两个字符的距离。17.输出输入的数据范例取所用体例道明符没有分歧。比方,a已经界说为整型,b界说为真型Int a=3; float b=4.5;printf(%f%dn,

12、a,b);编译时没有给出堕落疑息,但运转了局将取本意没有符。那种同伴尤为必要注重。 12.switch语句中漏写break语句。比方:依据测验成就的品级挨印出百分造数段。switch(grade) case A:printf(85100n);case B:printf(7084n);case C:printf(6069n);case D:printf(default:printf(errorn);因为漏写了break语句,case只起标号的做用,而没有起判别做用。果此,当grade 值为A时,printf函数正在实行完第一个语句后接着实行第2、3、4、5个printf函数语句。准确写法应正在每

13、一个分收后再减上“break;”。比方case A:printf(85100n);break;13.无视了while以及do-while语句正在细节上的区分。(1)main()int a=0,I;scanf(%d,&I);while(Ia=a+I;I+;printf(%d,a);(2)main()int a=0,I;scanf(%d,&I);doa=a+I;I+;while(Iprintf(%d,a);能够瞧到,当输出I的值小于或者即是10时,2者患上到的了局不异。而当I10时,2者了局便没有同了。果为while轮回是先判别后实行,而do-while轮回是先实行后判别。对于于年夜于10的数wh

14、ile轮回一次也没有实行轮回体,而do-while语句则要实行一次轮回体。14.界说数组时误用变量。int n;scanf(%d,&n);int an;数组名后用圆括号括起去的是常量抒发式,能够包含常量以及标记常量。即C没有同意对于数组的年夜小做动静界说。15.正在界说数组时,将界说的“元素个数”误以为是可以使的最年夜下标值。main()static int a10=1,2,3,4,5,6,7,8,9,10;printf(%d,a10);C言语划定:界说时用a10,暗示a数组有10个元素。其下标值由0入手下手,以是数组元素a10是没有存正在的。16.初初化数组时,已利用动态存储。int a3=

15、0,1,2;那样初初化数组是没有对于的。C言语划定只要动态存储(static)数组以及中部存储(exterm)数组才干初初化。应改成:static int a3=0,1,2;17.正在没有应减天址运算符&的地位减了天址运算符。scanf(%s,&str);C言语编译体系对于数组名的处置是:数组名代表该数组的肇始天址,且scanf函数中的输出项是字符数组名,没有需要再减天址符&。应改成:scanf(%s,str);18.同时界说了形参以及函数中的全部变量。int max(x,y)int x,y,z;z=xy?x:y;return(z);形参应当正在函数体中界说,而全部变量应当正在函数体内界说。应

16、改成:int max(x,y)int x,y;int z;z=xy?x:y;return(z);ll C言语罕见的堕落疑息Ambiguous operators need parentheses没有明白的运算必要用括号括起Ambiguous symbol xxx没有明白的标记Argument list syntax error参数表语法同伴Array bounds missing拾得数组界线符Array size toolarge数组尺寸太年夜Bad character in paramenters参数中有没有得当的字符Bad file name format in include direc

17、tive 包孕下令中文件名体例没有准确Bad ifdef directive synatax编译预处置ifdef有语法错Bad undef directive syntax编译预处置undef有语法错Bit field too large位字段过长Call of non-function挪用已界说的函数Call to function with no prototype挪用函数时出有函数的道明Cannot modify a const object没有同意建改常量对于象Case outside of switch遗漏了case 语句Case syntax errorCase 语法同伴Code

18、has no effect代码没有可述没有大概实行到Compound statement missing分步伐遗漏Conflicting type modifiers没有明白的范例道明符Constant expression required请求常量抒发式Constant out of range in comparison正在对比中常量凌驾局限Conversion may lose significant digits转换时会拾得意思的数字Conversion of near pointer not allowed 没有同意转换远指针Could not find file xxx寻没有到XX

19、X文件Declaration missing ;道明短少;Declaration syntax error道明中呈现语法同伴Default outside of switchDefault 呈现正在switch语句以外Define directive needs an identifier界说编译预处置必要标识符Division by zero用整做除了数Do statement must have whileDo-while语句中短少while全体Enum syntax error列举范例语法同伴Enumeration constant syntax error列举常数语法同伴Error d

20、irective :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 labelGoto语句出有标号Hexadecimal o

21、r 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 typedefsymbol范例界说标记利用没有失当In-l

22、ine assembly not allowed没有同意利用止间汇编Incompatible storage class存储种别没有相容Incompatible type conversion没有相容的范例转换Incorrect number format同伴的数据体例Incorrect use of defaultDefault利用没有当Invalid indirection有效的直接运算Invalid pointer addition指针相减有效Irreducible expression tree无奈实行的抒发式运算Lvalue required必要逻辑值0或者非0值Macro argu

23、ment syntax error宏参数语法同伴Macro expansion too long宏的扩大之后过长Mismatched number of parameters in definition 界说中参数个数没有婚配Misplaced break此处没有应呈现break语句Misplaced continue此处没有应呈现continue语句Misplaced decimal point此处没有应呈现小数面Misplaced elif directive没有应编译预处置elifMisplaced else此处没有应呈现elseMisplaced else directive此处没有应

24、呈现编译预处置elseMisplaced endif directive此处没有应呈现编译预处置endifMust 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

25、-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

26、(告诫)Possibly incorrect assignment赋值大概没有准确Redeclaration of xxx反复界说了xxxRedefinition of xxx is not identical xxx的两次界说没有分歧Register allocation failure存放器定址得败Repeat count needs an lvalue反复计数必要逻辑值Size of structure or array not known 布局体或者数给年夜小没有断定Statement missing ;语句后短少;Structure or union syntax error布局体或

27、者团结体语法同伴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 casesDefault太多(switch语句中一个)Too many error or warning messages

28、同伴或者告诫疑息太多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 r edeclaration of xxxxxx重界说的范例没有婚配Unable to create output file xxx无奈创建输入文件xxxUnabl

29、e to open include file xxx无奈挨开被包孕的文件xxxUnable to open input file xxx无奈挨开输出文件xxxUndefined label xxx出有界说的标号xxxUndefined structure xxx出有界说的布局xxxUndefined sy mbol xxx出有界说的标记xxxUnexpected end of file in comment started on line xxx 从xxx止入手下手的表明还没有停止文件没有能停止Unexpected end of file in conditional started on l

30、ine xxx从xxx 入手下手的前提语句还没有停止文件没有能停止Unknown assemble instruction已知的汇编布局Unknown option已知的操纵Unknown preprocessor directive: xxx没有了解的预处置下令xxxUnreachable code无路可达的代码Unterminated string or character constant字符串短少引号User break用户强止中止了步伐Void functions may not return a valueVoid范例的函数没有应有前往值Wrong number of argume

31、nts挪用函数的参数数量错xxx not an argumentxxx没有是参数xxx no t part of structurexxx没有是布局体的一全体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布局体的少度为整最多见的

32、20种VC+编译同伴疑息1、atal error C1010: unexpected end of file while looking for precompiled header directive。觅寻预编译头文件途径时逢到了没有该逢到的文件尾。(一样平常是出有#include stdafx.h)2、fatal error C1083: Cannot open include file: R.h: No such file or d irectory没有能挨开包孕文件“R.h”:出有那样的文件或者名目。3、error C2011: C: class type redefinition类“

33、C”重界说。4、error C2021: unknown character 0xa3没有了解的字符0xa3。(一样平常是汉字或者中文标面标记)5、error C2057: expected constant expression但愿是常量抒发式。(一样平常呈现正在switch语句的case分收中)6、error C2065: IDD_MYDIALOG : undeclared identifier“IDD_MYDIALOG”:已申明过的标识符。7、error C2082: redefinition of formal parameter bReset函数参数“bReset”正在函数体中重界说。8、error C2143: syntax error: missing : before 句法同伴:“”前短少“;”。9、error C2146: syntax erro

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论