第一篇:最常见的20种VC 编译错误信息集合
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: 'R„„.h': No such file or directory
不能打开包含文件“R„„.h”:没有这样的文件或目录。
3、error C2022: 'C„„': 'class' type redefinition
类“C„„”重定义。
4、error C2022: 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 error : missing ';' before identifier 'dc'句法错误:在“dc”前丢了“;”。
10、error C2196: case value '69' already used
值69已经用过。(一般出现在switch语句的case分支中)
11、error C2509: 'OnTimer' : member function not declared in 'CHelloView'成员函数“OnTimer”没有在“CHelloView”中声明。
12、error C2511: 'reset': overloaded member function 'void(int)' not found in 'B'
重载的函数“void reset(int)”在类“B”中找不到。
13、error C2555: 'B::f1': overriding virtual function differs from 'A::f1' only by return type or calling convention
类B对类A中同名函数f1的重载仅根据返回值或调用约定上的区别。
14、error C2660: 'SetTimer' : function does not take 2 parameters“SetTimer”函数不传递2个参数。
15、warning C4035: 'f„„': no return value
“f„„”的return语句没有返回值。
16、warning C4553: '= =' : operator has no effect;did you intend '='?没有效果的运算符“= =”;是否改为“=”?
17、warning C4700: local variable 'bReset' used without having been initialized
局部变量“bReset”没有初始化就使用。
18、error C4716: 'CMyApp::InitInstance' : must return a value
“CMyApp::InitInstance”函数必须返回一个值。
19、LINK : fatal error LNK1168: cannot open Debug/P1.exe for writing
连接错误:不能打开P1.exe文件,以改写内容。(一般是P1.Exe还在运行,未关闭)
20、error LNK2022: unresolved external symbol “public: virtual _ _thiscall C„„::~C„„(void)”
连接时发现没有实现的外部符号(变量、函数等)。
function call missing argument list 调用函数的时候没有给参数。
member function definition looks like a ctor, but name does not match enclosing class 成员函数声明了但没有使用
unexpected end of file while looking for precompiled header directive 在寻找预编译头文件时文件意外结束,编译不正常终止可能造成这种情况
第二篇:常见错误信息
Keil C 编译器常见警告与错误信息的解决方法
1)如果两个或更多c文件都需要使用某非bit型变量,那么声明是应将相应存储类型同时注明,即如果定义“uchar idata cntembuf;”,那么应声明为“extern uchar idata cntembuf;”或者“extern idata cntembuf;”;
2)如果是bit型变量,则数据类型“bit”必须注明,而存储类型可以省略;
LN认为,keil里之所以将bit变量和其他类型变量分开处理,是keil面向的处理器都是51内核的,而51内核bit变量只存在于特殊功能寄存器和内存的位寻址区(bdata区),而特殊功能寄存器中的位变量若在两个以上文件中使用各各文件都只能用类似于sbit abcd = P1^6;的形式进行声明,并且keil不检测abcd这个位变量在不同文件中是否代替相同位(例如,可以在另一个c文件中声明为:sbit abcd = P0^5;等),这样一来,用extern声明的bit变量就只有在bdata区了,所以,允许在在一个c文件中定义位变量后,在其它c文件中省略“bdata”这个存储类型;
而非bit型变量则可以在特殊功能寄存器,内存,外存,所以声明时要使存储类型与定义时的存储类型相同(也可以在定义和声明时都不规定存储类型,而又编译器根据编译模式自动分配)。
1.Warning 280:‟i‟:unreferenced local variable
说明局部变量i 在函数中未作任何的存取操作解决方法消除函数中i 变量的宣告Warning 206:‟Music3‟:missing function-prototype
说明Music3()函数未作宣告或未作外部宣告所以无法给其他函数调用
解决方法将void Music3(void)写在程序的最前端作宣告如果是其他文件的函数则要写成extern void Music3(void),即作外部宣告。Compling :C:8051MANN.C
Error:318:can‟t open file „beep.h‟
说明在编译C:8051MANN.C 程序过程中由于main.c 用了指令#i nclude “beep.h”,但却找不到所致解决方法编写一个beep.h 的包含档并存入到c:8051 的工作目录中Compling:C:8051LED.C
Error 237:‟LedOn‟:function already has a body
说明LedOn()函数名称重复定义即有两个以上一样的函数名称
解决方法修正其中的一个函数名称使得函数名称都是独立的***WARNING 16:UNCALLED SEGMENT,IGNORED FOR OVERLAY PROCESSSEGMENT: ?PR?_DELAYX1MS?DELAY
说明DelayX1ms()函数未被其它函数调用也会占用程序记忆体空间解决方法去掉DelayX1ms()函数或利用条件编译#if …..#endif,可保留该函数并不编译***WARNING 6 :XDATA SPACE MEMORY OVERLAP
FROM : 0025H
TO: 0025H
说明外部资料ROM 的0025H 重复定义地址
解决方法外部资料ROM 的定义如下Pdata unsigned char XFR_ADC _at_0x25 其中XFR_ADC 变量的名称为0x25,请检查是否有其它的变量名称也是定义在0x25 处并修正它7 WARNING 206:‟DelayX1ms‟: missing function-prototype
C:8051INPUT.C
Error 267 :‟DelayX1ms „:requires ANSI-style prototype C:8051INPUT.C
说明程序中有调用DelayX1ms 函数但该函数没定义即未编写程序内容或函数已定义但未作声明。
解决方法:编写DelayX1ms 的内容,编写完后也要作声明或作外部声明可在delay.h 的包含档声明成外部以便其它函数调用。***WARNING 1:UNRESOLVED EXTERNAL SYMBOL
SYMBOL:MUSIC3
MODULE:C:8051MUSIC.OBJ(MUSIC)
***WARNING 2:REFERENCE MADE TO UNRESOLVED EXTERNAL
SYMBOL:MUSIC3
MODULE:C:8051MUSIC.OBJ(MUSIC)
ADDRESS:0018H
说明程序中有调用MUSIC 函数但未将该函数的包含文档C 加入到工程文档Prj 作编译和连接。
解决方法:设MUSIC3 函数在MUSIC.C 里。将MUSIC C 添加到工程文件中去9 ***ERROR 107:ADDESS SPACE OVERFLOW
SPACE: DATA
SEGMENT: _DATA_GOUP_
LENGTH: 0018H
***ERROR 118: REFERENCE MADE TO ERRONEOUS EXTERNAL
SYMBOL: VOLUME
MODULE: C:8051OSDM.OBJ(OSDM)
ADDRESS: 4036H
说明data 存储空间的地址范围为0~0x7f,当公用变量数目和函数里的局部变量如果存储模式设为SMALL 则局部变量先使用工作寄存器R2~R7 作暂存当存储器不够用时则会以data 型别的空间作暂存的个数超过0x7f 时就会出现地址不够的现象。
解决方法:将以data 型别定义的公共变量修改为idata 型别的定义说明定义了全局变量而没有外部External声明:reference made to erroneous externalRam空间不足:public refers to ignore segment
外部变量:定义处不用加External,声明处要加External
将以data 型别定义的公共变量修改为idata 型别的定义*** ERROR L118: REFERENCE MADE TO ERRONEOUS EXTERNAL
定义了某某函数或全部变量在不同文件里面想调用它,却在包含头文件里面少了extern语句,或只有主程序和包含头文件没有(EXTERN......定义语句(函数)).如果调试时有些if结构里的语句符合条件没有执行,或者某些语句不符合条件也被执行,那是因为if和else里有相同的语句,编译的时候作优化处理了。WARNING 15(MULTIPLE CALL TO SEGMENT)症状
我添加了一个中断处理程序(ISR)到我的项目中,然而我却得到了如下的警告: ***WARNING L15:MULTIPLE CALL TO SEGMENT
SEGMENT:?PR?_WRITE_GMVLX1_REG?D_GMVLX1
CALLER1:?PR?VSYNC_INTERRUPT?MAIN
CALLER2:?C_C51STARTUP
***WARNING L15:MULTIPLE CALL TO SEGMENT
SEGMENT:?PR?_SPI_SEND_WORD?D_SPI
CALLER1:?PR?VSYNC_INTERRUPT?MAIN
CALLER2:?C_C51STARTUP
***WARNING L15:MULTIPLE CALL TO SEGMENT
SEGMENT:?PR?SPI_RECEIVE_WORD?D_SPI
CALLER1:?PR?VSYNC_INTERRUPT?MAIN
CALLER2:?C_C51STARTUP
上面这些都是什么?我该如何解决这个问题呢?
原因
Warning 15向我们表明了linker发现了一个函数,这个函数不仅在main code里被调用了,而且在ISR(或者被ISR调用的函数中)被调用了。或者是被同时被多个ISR同时调用了。这样会产生一个问题,就是在此函数不是一个可重入函数,而当此函数已经在执行时它可能被另一个ISR所调用。这样就会导致结果是可变的而且很可能会导致一些参数的错误。另一个问题就是本地变量和参数所使用的内存可能被其他函数的内存覆盖。如果函数是由中断所调用的,则此函数的内存就会被使用。这会引起其它函数的内存错误。
举例来说,对于你的第一个警告,WRITE_GMVLX1_REG是会被多个root所调用。其被定义在D_GMVLX1.C或者D_GMVLX1.A51中。他不仅会被ISR(或者被ISR调用的函数)而且也会被MAIN.C中的VSYNC_INTERRUPT函数所调用。
解决方法
有几种方法去解决这个问题
如果你100%确认这个函数的两个副本都不会同时执行(如果此函数是被main调用并且中断是未被使能的)并且此函数没有使用内存(只使用的寄存器),那么你就可以忽略此警告。如果此函数使用了内存,你就要使用OVERLAY directive来将此函数从覆盖分析(overlay anaysis)中移除。举例如下:
OVERLAY(?PR?_WRITE_GMVLX1_REG?D_GMVLX1!*)
如上语句能阻止被此函数使用的内存遭到覆盖。如果这个函数调用了你程序中其他的在别处的函数,那么你可能需要将这些函数也排除在覆盖分析之外。
如果当此函数在执行时可以被调用,那么事情就会变得比较的复杂。你可能需要:
无论何时当从main中调用此函数时,需要关闭中断。你可能需要对被调用的函数使用#pragma disable。你也必须使用OVERLAY directive将此函数从overlay analysis中移除。为此函数创建两个副本。一个给main,一个给ISR。
使此函数可重入。举例如下:
void myfunc(void)reentrant {
}
上面的定义会产生一个用来存储参数和本地变量的可重入的栈。如果使用了这种方法那么这个可重入的栈必须在STARTUP.A51中配置。这样会花费更多的RAM并且会减缓可冲入函数的执行
第三篇:最常见的20种VC 错误
最常见的20种VC 编译错误信息
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: 'R„„.h': No such file or directory
不能打开包含文件“R„„.h”:没有这样的文件或目录。
3、error C2022: 'C„„': 'class' type redefinition
类“C„„”重定义。
4、error C2022: 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 error : missing ';' before identifier 'dc'
句法错误:在“dc”前丢了“;”。
10、error C2196: case value '69' already used
值69已经用过。(一般出现在switch语句的case分支中)
11、error C2509: 'OnTimer' : member function not declared in 'CHelloView'
成员函数“OnTimer”没有在“CHelloView”中声明。
12、error C2511: 'reset': overloaded member function 'void(int)' not found in 'B'
重载的函数“void reset(int)”在类“B”中找不到。
13、error C2555: 'B::f1': overriding virtual function differs from 'A::f1' only by return type or calling convention
类B对类A中同名函数f1的重载仅根据返回值或调用约定上的区别。
14、error C2660: 'SetTimer' : function does not take 2 parameters
“SetTimer”函数不传递2个参数。
15、warning C4035: 'f„„': no return value
“f„„”的return语句没有返回值。
16、warning C4553: '= =' : operator has no effect;did you intend '='?
没有效果的运算符“= =”;是否改为“=”?
17、warning C4700: local variable 'bReset' used without having been initialized
局部变量“bReset”没有初始化就使用。
18、error C4716: 'CMyApp::InitInstance' : must return a value
“CMyApp::InitInstance”函数必须返回一个值。
19、LINK : fatal error LNK1168: cannot open Debug/P1.exe for writing
连接错误:不能打开P1.exe文件,以改写内容。(一般是P1.Exe还在运行,未关闭)
20、error LNK2022: unresolved external symbol “public: virtual _ _thiscall C„„::~C„„(void)”连接时发现没有实现的外部符号(变量、函数等)。
第四篇:中常见的一些错误信息
汇编中常见的一些错误信息
ml.exe错误信息:
FATAL严重错误
cannot open file不能打开文件
I/O error closing fileI/O错误 正在关闭文件
I/O error writing fileI/O错误 正在写文件
I/O error reading fileI/O错误 正在读取文件
out of memory缺少内存
assembler limit : macro parameter name table full汇编限制:宏参数名表已满 invalid command-line option无效命令行参数
nesting level too deep嵌套过深
unmatched macro nesting不正确的宏嵌套
line too long行太长
unmatched block nesting不正确的区、段嵌套
directive must be in control block指令必须在控制段
error count exceeds 100;stopping assembly错误数超过100,停止汇编 invalid numerical command-line argument无效命令行参数
too many arguments太多参数、定义、冲突
statement too complex声明太复杂
Internal Assembler Error内部汇编错误
missing source filename找不到源文件名
COFF error writing fileCOFF错误,正在写文件
invalid debug and browser data;file exceeds line limit不能排除故障和浏览数据;文件超过行限制
cannot find link.exe找不到连接程序
cannot find cvpack.exe找不到cvpack.exe
SEVERE严重的错误
memory operand not allowed in context内存操作数无法载入上下文环境 immediate operand not allowed当前操作数无法载入
cannot have more than one ELSE clause per IF blockIF段只能有一个ELSE从句 extra characters after statement附加的字符在声明之后
symbol type conflict符号类型冲突
symbol redefinition符号已经定义
undefined symbol符号没有定义
non-benign record redefinition没有利于记录的定义
syntax error语法错误
syntax error in expression表达式存在语法错误
invalid type expression无效的类型表达式
distance invalid for word size of current segment当前区、段的大小命令无效
PROC, MACRO, or macro repeat directive must precede LOCALPROC, MACRO, 或 macro repeat指令必须在LOCAL之前
.MODEL must precede this directive.MODEL必须在指令之前
cannot define as public or external不能定义为公有或外部的segment attributes cannot change区、段属性不能更换
expression expected预期表达式
operator expected预期操作数
invalid use of external symbol使用了无效的外部符号
operand must be RECORD type or field操作数必须是RECORD类型或域
identifier not a record没有记录标示符
record constants may not span line breaks连续记录不能超过行间隔
instruction operands must be the same size命令操作数必须是一样的长度
instruction operand must have size命令操作数必须有长度
invalid operand size for instruction操作数长度对于指令无效
operands must be in same segment操作数必须在相同的段
constant expected连续预期
operand must be a memory expression操作数必须是一个内存表达式
expression must be a code address表达式必须是一个代码地址
multiple base registers not allowed不允许多重基础寄存器
multiple index registers not allowed不允许多重标志寄存器
must be index or base register必须是基础或标志寄存器
invalid use of register使用的寄存器无效
invalid INVOKE argument无效的INVOKE符号
must be in segment block必须在区、段、块中
DUP too complexDUP太复杂
too many initial values for structure太多结构的基础资料
statement not allowed inside structure definition声明不允许在结构里面
missing operand for macro operator找不到宏的操作数
line too long
segment register not allowed in context上下文不允许有寄存器
string or text literal too long文本或字符串太长
statement too complex声明太复杂
identifier too long标识符太长
invalid character in file文件里有无效字符
missing angle bracket or brace in literal语句里找不到同样的括弧或框架
missing single or double quotation mark in string找不到单引号或双引号
empty(null)string没有字符串
nondigit in number没有总数
syntax error in floating-point constant不确定的指向中有语法错误
real or BCD number not allowed不允许real或BCD编码
text item required必须的文本项
forced error强制错误
forced error : value equal to 0标准等于零
forced error : value not equal to 0标准不等于零
forced error : symbol not defined符号没有定义
forced error : symbol defined符号已定义
forced error : string blank字符串是空的forced error : string not blank字符串不是空的forced error : strings equal字符串是相同的forced error : strings not equal字符串不是相同的[ELSE]IF2/.ERR2 not allowed : single-pass assembler[ELSE]IF2/.ERR2不允许单独汇编 expression too complex for.UNTILCXZ.UNTILCXZ表达式太复杂
can ALIGN only to power of 2仅能对齐到2的幂
structure alignment must be 1, 2, 4, 8, or 16结构对齐必须是1,2,4,8或16 expected预定义
incompatible CPU mode and segment size不匹配的CPU模式和段尺寸
LOCK must be followed by a memory operationLOCK指令必须跟在内存操作之后 instruction prefix not allowed不允许的命令前缀
no operands allowed for this instruction指令没有操作数
invalid instruction operands无效的指令操作数
initializer magnitude too large for specified size初始指定尺寸太大
cannot access symbol in given segment or group在特定的段或类不能存取符号
operands have different frames操作数存在不同的结构
cannot access label through segment registers在段寄存器中不能存取标记
jump destination too far跳转目标太远
jump destination must specify a label跳转目标必须指定一个标记
instruction does not allow NEAR indirect addressing指令不允许近间接寻址
instruction does not allow FAR indirect addressing指令不允许远间接寻址
instruction does not allow FAR direct addressing指令不允许远直接寻址
jump distance not possible in current CPU mode跳转距离不适合当前CPU模式
missing operand after unary operator一元运算符之后找不到操作数
cannot mix 16-and 32-bit registers不能结合16位和32位寄存器
invalid scale value无效范围标准
constant value too large连续标准太多
instruction or register not accepted in current CPU mode当前CPU模式不认可的指令或寄存器 reserved word expected预期的保留字
instruction form requires 80386/486指令需要80386/486指示
END directive required at end of fileEND指令必须在文件结尾
too many bits in RECORD太多位在记录里
positive value expected预期的明确的标准
index value past end of string索引标准在字符串结尾之后
count must be positive or zero计数必须是零或明确的count value too large计数标准太多
operand must be relocatable操作数必须是转移表
constant or relocatable label expected预期的转移表或连续的segment, group, or segment register expected预期的段,类型或段寄存器 segment expected预期的区段
invalid operand for OFFSETOFFSET操作数无效
invalid use of external absolute由于完全外部的使用无效
segment or group not allowed区段或类型不允许
cannot add two relocatable labels不能增加双重转移表标记
cannot add memory expression and code label不能增加内存表达式和代码标记
第五篇:Visual_C _6.0常见语法错误信息
Visual C 6.0常见的语法错误信息
1、error C2022: unknown character '0xa1'
不认识的字符'0xa1'。(一般是汉字或中文标点符号)
2、error C2065: 'I„„' : undeclared identifier“I„„”:未声明过的标识符。
3、error C2146: syntax error : missing ';'
语法错误:丢了“;”。
4、error C2146: syntax error : missing ')'
语法错误:丢了“)”。
5、fatal error C1004: unexpected end of file found 语法错误:丢了“}”。
6、error C2057: expected constant expression
希望是常量表达式。(一般出现在switch语句的case分支中)
7、error C2196: case value 'xx' already used
值xx已经用过。(一般出现在switch语句的case分支中)
8、error C2181: illegal else without matching if语法错误:if缺少判断表达式。