【轉】keil 常見錯誤,警告大全(づ ̄3 ̄)づ╭❤~

 身爲一個嵌入式系統的學習者,相信你們在使用keil必定遇到過下面圖示的狀況,無奈英語不過關,因此在這裏給你們分享一下keil中常見錯誤和警告,但願能幫到你們。φ(>ω<*) git

 

 C51編譯器識別錯類型有三種
一、致命錯誤:僞指令控制行有錯,訪問不存在的原文件或頭文件等。
二、語法及語義錯誤:語法和語義錯誤都發生在原文件中。有這類錯誤時,給出
提示但不產生目標文件,錯誤超過必定數量才終止編譯。
三、警告:警告出現並不影響目標文件的產生,但執行時有可能發生問題。程序
員應斟酌處理。
D.1 致命錯誤
C_51 FATAL_ERROR
ACTION: <當前行爲>
LINE: <錯誤所在行>
ERROR: <錯誤信息> terminated
或C_51 FATAL ERROR
ACTION: <當前行爲>
FILE: <錯誤所在文件>
ERROR: <錯誤信息> terminated
C_51 TERMINATED C_51
(1) ACTION 的有關信息
*PARSING INVOKE-/#PRAGMA_LINE
在對#pragma 指明的控制行做此法分析時出錯。
*ALLOCATING MEMORY
系統分配存儲空間時出錯。編譯較大程序須要512k空間。
*OPENING INPUT_FILE
打開文件時,未找到或打不開源文件/頭文件。
*CREATE LIST_FILE/OBJECT_FILE/WORK_FILE
不能建立上述文件。可能磁盤滿或文件已存在並且寫保護。
*PARSING SOURCE_FILE/ANALYZING DECLARATIONS
分析源程序時發現外部引用名太多。
*GENERATING INTERMEDIATE CODE
源代碼被翻譯成內部僞代碼,錯誤可能來源於函數太大而超過內部極限。
*WRITING TO FILE
在向文件(work,list,prelist或object file)寫時發生錯誤。
(2)ERROR的有關信息
*MEMORY SPACE EXHAUSTED
全部可用系統空間耗盡。至少須要512k 字節空間。沒有足夠空間,用戶必須檢查常駐內存
的驅動程序是否太多。
*FILE DOES NOT EXIST
FILE 行定的文本文件名未發現。
*CAN’T CREAT FILE
FILE 行定義的文件不能被建立。
*SOURCE MUST COME FROMA DISK_FILE
源文件和頭文件必須存在於硬盤或軟盤上。控制檯、CON、CI 或相似設備不容許做爲輸入
文件。
*MORE THAN 256 SEGMENTS/PUBLICS/EXTERNALS
受OMF_51的歷史限制,一個源程序不能超過256個各類函數的類型段,256個全局變量,
256 個公共定義或外部引用名。不使用爲變量能夠減小使用的段數。使用static 存儲類型說
明符可減小全局變量的使用數目。合理調整定義性說明的位置可減小外部引用名的使用數
目。
*FILEWRITE ERROR
當向list、prelist、work或object文件中寫內容時,因爲空間不夠而發生錯誤。
*NON_NULLARGUMENT EXPECTED
所選的控制參數須要一個括號內的變量,如一個文件夾或一個數。
*「(」AFTER CONTROL EXPECTED
變量的左括號丟失。
*「)」AFTER PARAMETER EXPECTED
變量的右括號丟失。
*RESPECIFIED OR CONFLICTING CONTROL
所選的控制參數與前面發生衝突或重複,例如CODE和NOCOND
*BAD DECIMAL NUMBER
控制參數的數字含有非法數,須要使用十進制數。
*OUT OF RANGE DECIMAL NUMBER
控制參數的數字越界,例如OPTIMIZE 的參量爲0-5。
*IDENTIFIER EXPECTED
控制參數DEFINE 須要一個標識符作參量,與C語言的規則相同。
*PARSE STACK OVERFLOW
分析棧溢出。多是源程序包含特別複雜的表達式,或功能塊嵌套數超過15。
*PREPOCESSOR: MACRO TO NESTED
宏擴展期間,預處理器的棧耗用太大。代表宏嵌套太多,或有遞歸宏定義。
*PREPOCESSOR: LINE TOO LONG(510)
宏擴展後行超過510個字符。
*CAN’T HAVE GENERAL CONTROL IN INVOCATION LINE
通常控制(如EJECT)不能是命令行的一部分,應將它們放入源文件「pragma」預處理行
中。
D.2 語法及語義錯誤
D.2.1 錯誤格式
這類錯誤在列表文件中產生以下格式的信息:
***ERROR<number>IN LINE<line>OF<file>:error message
***WARING<number>IN LINE<line>OF<file>:warning message
<number>表示錯誤行;
<line>表示源文件或頭文件中與錯誤或警告相關的行;
<file>指明瞭錯誤所在的源文件或頭文件;
D.2.2 錯誤信息及可能發生的緣由
*ERROR100:unprintable character 0x??skipped
源文件中發現非法字符(注意,註解內的字符不作檢查)。
*ERROR101:unclosed string
串未用引號結尾。
*ERROR 102:string too long
串不得超過511 個字符。爲了定義更長的串,用戶必須使用續行符‘\’邏輯的繼續該串,
在詞彙分析時遇到以該符號結尾的行會與下行鏈接起來。
*ERROR 103: invalid character constant
試圖再聲明一個已定義的宏,已存在的宏能夠用#undef指令刪除。預約義的宏不能刪除。
*ERROR 104: identifier expected
預處理器指令指望產生一個標示符,如ifdef<name>。
*ERROR 105: unclosed comment
當註解無結束界定符(*/)時產生此錯誤。
*EROOR 106: unbalanced#if-endif controls
endif的數量與if或ifdef的數量不匹配。
*ERROR 107:include file nesting exceeds 9
include指令後的文件名無效或丟失
*ERROR 108: expected string,如#error 「string」
預處理器指令指望一個串變量。
*ERROR 109:<user error text>
由#error 僞指令引入的錯誤信息以錯誤信號形式顯示。
*ERROR 110:missing directive
預處理行#後缺乏僞指令。
*ERROR 111:unknown directive
預處理行#後不是僞指令。
*ERROR 112:misplaced ‘elif’
*ERROR 113:misplaced ‘else’
*ERROR 114:misplaced ‘endif’
指令 elif/else/endif 只有在if、ifdef、ifndef指令內纔是合法的。
*ERROR 117:bad integer expression
if/elif指令的數值表達式有語法錯誤。
*ERROR 118:missing’(‘after macro identifier
宏調用中實參表的左括號丟失
*ERROR 119:reuse of macro formal parameter
宏定義形參名重複使用
*ERROR 120:‘C’unexpected in formal list
形參表中不容許有字符‘c’,應用逗號代替
*ERROR 121:missing ‘)’after actual parameter
宏調用實參表的右括號丟失
*ERROR 122:illegal macro invocation
宏調用的實參表與宏定義中的形參表不一樣
*ERROR 123:missing macro name after ‘define’
#define 僞指令後缺預約義的宏
*ERROR 124:expected macro formal parameter
宏定義要求形參名
*ERROR 125:declarater too complex
說明過於複雜
*ERROR 126:type-stack underflow
對象的聲明至多隻能包含20 個類型修飾符(【】,*,(),)錯誤126 常常在錯誤125 以前,
二者一塊兒發生。
*ERROR 127:invalid storage class
對象用無效的存儲類所說明。當在函數外用auto/register 存儲時會發生這種狀況。
*ERROR 128:memory space: illegal memory space ‘memory space ’used
函數參數的存儲類由存儲模式(SMALL LARGE COMPACT)決定用戶不能改變,使用不一樣
於存儲模式的自動變量應該爲靜態的存儲類
*ERROR 129:missing’ ;’before ‘token’
該錯誤表示分號丟失,一般該錯誤會引起一連串的錯誤,引起的這些錯誤可有可無。由於缺
少分號後編譯器不能作正確的語法分析
*ERROR 130:value out of range
using 或interrupt 指令後參數越限。using 用的寄存器組號位0-3,interrupt 須要0-15 的中
斷號
*ERROR 131:duplicate function-parameter
函數中形參名重複,形參名應彼此不一樣
*ERROR 132:not in formal parameter list
函數內參數聲明使用的名字未出如今參數表中
*ERROR 133:char function(v0,v1,v2)
Char*v0,*v1,*v5;/ *’v5’在形參中未出現
*ERROR 134:xdata/idata/pdata/data on function not permitted
函數老是駐留於0x5xxxx 的code存儲區,不能位於xdata/idata/pdata/data 空間
*ERROR 135:bad storage class for bit
位變量的定義能夠接受static或extern的存儲類,用REGIESTER和ALIEN 都是非法的
*ERROR 136:‘void’on variable
‘void’類型只容許做爲函數的返回類型或與指針類型合用(void*)
*ERROR 137:illegal parameter type:’function’
函數參數的類型不能是函數,然而函數指針能夠做爲參數
*ERROR 138:interrupt ()may not receive or return value (s)
中斷函數既不能有參數又不能有返回值
*ERROR 139:illegal use of ‘alien’
關鍵字alien 將函數定義爲PL/M51 規定的過程與函數結構。這意味着C函數中有參數的縮
記符號(即funct(…);)時是不能用alien的
*ERROR 140:bit in illegal memory-space
位變量的定義可包含修飾符DATA,若是無修飾符則假定爲DATA。由於位變量始終位於
0x4xxx 的內部數據存儲器中,當試圖採用其餘存儲空間就會產生這個錯誤。
*ERROR 141:NEAR<token>:expected<token>
編譯器所見的單詞是錯誤的。指望正確的單詞
*ERROR 142:invalid base address
Sfr 說明中的基址有錯。有效基址爲0x80-0xff。若是聲明採用base^pos 形式,則基址是8的
整數倍
*ERROR 143:invalid absolute bit position
Sbit 說明中位地址必須在0x80-0xff之間
*ERROR 144:base^pos:invalid bit position
Sbit 說明中位pos必須在0~7之間
*ERROR 145:undeclared sfr
Sfr 未說明
*ERROR 146:invalid sfr
絕對位地址說明(base^pos)包含無效的基地址。這個基地址必須與sfr 名相對應
*ERROR 147:object too large
對象不能超過65536(64k)字節
*ERROR 148:field not permitted in union
聯合不能包含位成員,這個限制是由8051結構決定的。
*ERROR 149:function member in struct/union
結構或者聯合不能包含函數類型的成員。可是指向函數的指針是容許的
*ERROR 150:bit member in struct/union
結構或者聯合不能包含位類型的成員,這個限制是由8051 結構決定的
*ERROR 151:self relative struct/union
結構或者聯合不能包含自身
*ERROR 152:bit field type too small for number of bits
位域聲明中指定的位數超過所給原型中位的數量
*ERROR 153:named bit-field cannot have 0 width
命名的域寬度爲0 錯誤,只有未命名的位域容許是0寬度
*ERROR 154:pro to field
無指向位域指針的類型
*ERROR 155:char/int required for fields
位域基類型要求char 或int類型,unsigned char 或unsigned int 也有效
*ERROR 156:alien permitted on function only
Alien 只能用於函數
*ERROR 157:var_parms on alien function
有變參數的函數不能用alien ,由於PL/M51函數只能用固定數量的參數
*ERROR 158:function contains unnamed parameter
函數定義的參數表中包含無名參數。無名參數只容許用於函數的原型中
*ERROR 159:type follows void
函數原型聲明中可含一個空的參數表f(void)。Void後不能再用其餘類型定義
*ERROR 160:void invalid
Void類型只能與指針合用或代表函數沒有返回值
*ERROR 161:formal parameter ignored
函數內的外部函數引用聲明使用了無類型的參數表。例如「 extern(a,b,c);」要求形參表
*ERROR 162:duplicate function-parameter
函數內參數名重複
*ERROR 163:unknown array size
通常的無論是一維數組仍是多維數組或外部數組,都須要指定數組的大小,這個大小是由編
譯器的初始化時計算,這個錯誤代表試圖爲一個未定維的數組使用sizeof運算符,會哦着一
個多維數組的附加元素未定義。
*ERROR 164:ptr to null
這一個錯誤一般是由前一個錯誤形成的
*ERROR 165:ptr to bit
指向位的指針不是合法的類型
*ERROR 166:array of function
數組不能包含函數,但可能包含指向函數的指針。
*ERROR 167:array of fields
位域不能安排爲數組
*ERROR 168:array of bit
數組沒有位類型
*ERROR 169:function returns function
函數不能返回函數,但能夠返回一個指向函數的指針
*ERROR 170:function returns array
函數不能返回數組,但可返回指向數組的指針
*ERROR 171:missing enclosing swith
Break/continue 語句只能出如今for,while,do while或switch語句中間。
*ERROR 172:missing enclosing swith
Case語句只能用在switch語句中
*ERROR 173:missing return-expression
返回類型不是integer 的函數必須包含一條表明達式的return 語句。因爲要與老版本兼容,
編譯器對返回整形值的函數不作檢查
*ERROR 174:return-expression on void-function
Void 函數不能返回值,所以不能包含帶表達式return的語句
*ERROR 175:duplicate case value
每一個case 語句必須包含一個常量表達式作其變量,這個值不能在switch 語句的各級中出現
屢次
*ERROR 176:more than one default
Switch語句中不能包含多於一個的default語句
*ERROR 177:different struct/union
賦值或參數傳遞中使用告終構/聯合的不一樣類型
*ERROR 178:struct/union comparison illegal
根據ANSI C,兩個結構或聯合的比較是不容許的
*ERROR 179:cannot/cast from/to void-type
將void類型轉化爲其餘類型數據或將其餘類型轉化爲void類型都是非法的
*ERROR 180:cannot cast to’function’
轉化爲function是非法的,使用函數指針指向不一樣的函數
*ERROR 181:incompatible operand
在所給的運算符中至少有一個操做符類型是無效的
*ERROR 182:point to different object
報告指針使用不一致
*ERROR 183:unmodifiable value
預修改的對象位於CODE 存儲區,於是不能修改
*ERROR 184:sizeof :illegal operand
Sizeof運算符不能決定函數或位域大小
*ERROR 185:different memory space
對象說明的存儲空間與前面的不一致
*ERROR 186:invalid dereference
這條錯誤信息可能由編譯器內部問題產生的
*ERROR 187:not an lvalue
所需參量必須是可變對象的地址
*ERROR 188:unknown object size
沒法計算對象的大小,由於缺乏數組的維數或由於經過void指針的間接訪問
*ERROR 189:‘&’on bit/sfr illegal
地址操做符‘&’不容許用於位對象或sfr
*ERROR 190:’&’:not an lvalue
地質部是可變的對象,不能做爲左值
*ERROR 191:‘&’on constant
試圖爲所列類型常數創建指針
*ERROR 192:‘&’on array/function
地址操做符&不容許用於數組或函數,函數和數組自己都表明了地址
*ERROR 193:illegal op-type(s)
*ERROR 193:illegal add/sub on ptr
*ERROR 193:illegal operation on bit(s)
*ERROR 193:bad operand type
當一個表達式使用給定運算符的非法操做類型時就會出現該錯誤,使用個定運算符的非法操
做類型的無效的表達式,例如bit+bit,ptr+ptr,或ptr*<any>。錯誤信息包括引發錯誤的運算符。
下列運算可以使用位操做符
賦值(=)
OR/複合OR(|,|=)
AND/複合AND(&,&=)
XOR/複合XOR(^,^=)
位或常數的安位比較(= =,!=)
取反(~)
*ERROR 194:’*’indirection to object of unknown size
間接操做符*不能用於void指針(void*),由於指針所指的對象的大小時未知的
*ERROR 195:’*’illegal indirection
間接操做符*不能用於非指針變量
*ERROR 196:mspace probably invalid
產生此警告是由於某些常數值賦給指針而且常數沒有造成一個有效的指針值,有效的指針常
數類型爲long/unsigned long。編譯器對指針對象採用24bit(3 字節),低16 位表示偏移,高
8 位表示存儲類的選擇,在低字節中,值從1 到5 代表了xdata/pdata/idata/data/和code 的存
儲類
*ERROR 197:illegal pointer assignment
試圖將一個非法變量賦給指針,只有另外一個指針或指針變量能夠賦給指針
*ERROR 198:size of returns zero
求某些對象長度獲得0,若是對象是外部的或一個數組中並不是全部維的大小都是已知時獲得
0,這時候該值多是錯的。
*ERROR 199:left size of’->’requires struct/union pointer
->操做符的左邊變量必須是結構或變量
*ERROR 200:left size of ‘.’requires struct/union
操做符的左邊變量必須是結構/聯合
*ERROR 201:undefined struct/union tag
所給的結構/聯合標記名是未知的
*ERROR 202:undefined identifier
所給的標示符未定義
*ERROR 203:bad storage class(nameref)
該錯誤表示編譯器的內部有問題
*ERROR 204:undefined member
所給的結構/聯合成員名未定義
*ERROR 205:cannot call an interrupt function
中斷函數不能像普通函數那樣調用,由於這種函數的頭端和尾端是爲中斷特殊編碼的
*ERROR 206:missing function-prototype
調用的函數缺乏原型說明
*ERROR 207:declared with ‘void’ parameter list
用void參數說明的函數不接受調用者傳來的參數
*ERROR 208:too many actual parameter
函數調用包含了多餘的實參
*ERROR 209:too few actual parameter
函數調用時傳遞的實參過少
*ERROR 210:too many nested calls
超過了10 個函數嵌套調用的極限
*ERROR 211:call not to a function
函數調用時沒有函數的地址或未對指向函數的指針賦值
*ERROR 212:indirect call with parameter
因爲參數傳遞方法的限制,經過指針的間接函數調用不能直接做爲實參。這種參數傳遞方法
要求被調用的函數名已知,由於參數的寫入要被寫入調用函數的數據段。然而間接調用時函
數的的名字時未知的
*ERROR 213:left side of assign_op not an lvalue
在賦值操做符左邊要求可變的對象
*ERROR 214:cannot cast non_pointer to pointer
非指針不能轉化爲指針
*ERROR 215:cannot cast pointer to not_int/pointer
指針能夠轉化爲另外一個指針或整數,但不能轉化爲其餘類型
*ERROR 216:subscript on non_array or too many dimensions
對非數組使用了下標或數組維數過多
*ERROR 217:non_integral index
數組的下標表達式必須是整型類型
*ERROR 218:void_type in controlling expression
While,for 或do while語句中表達式不能是void類型
*ERROR 219:long constant truncated to int
企圖把長整型常量截斷爲整型數是錯誤的
*ERROR 220:illegal constant expression
非法常量表達式
*ERROR 221:non_constant case/dim expression
Case值或下標值([])要求用常量表達式
*ERROR 222:div by zero
*ERROR 223:mod by zero
編譯器檢測到0 除或0 模的錯誤
*ERROR 224:illegal operation on float/double
AND 和NOT一類的運算符不容許做用於float/double
*ERROR 225:expression too complex ,simplify
表達式太複雜,必須簡化
*ERROR 226:duplicate struct/union/enum tag
結構/聯合/枚舉類型中有重複標記
*ERROR 227:not a union tag
所給的標記名雖已定義,但不是聯合的標記
*ERROR 228:not a struct tag
所給的標記名雖已定義,但不是結構的標記
*ERROR 229:not an enum tag
所給的標記名雖已定義,但不是枚舉的標記
*ERROR 230:unknown struct/union/enum tag
所給的結構/聯合/枚舉標記名未定義
*ERROR 231:redefinition
所給的名字已經定義,不能再定義
*ERROR 232:duplicate label
所給的標號已經訂義
*ERROR 233:undefined label
當對函數進行分析後,編譯器檢查到函數有未定義的標號,發出錯誤信息
*ERROR 234:‘{’scope stack overflow(31)
超過了最大爲31 個的功能嵌套極限,多餘的塊被忽略
*ERROR 235:parameter<number>:different type
函數實參類型與函數原型中的不一樣
*ERROR 236:different length of parameter lists
所給的函數是參量與函數原型中的不一樣
*ERROR 237:function already has body
試圖定義已經定義過的函數
*ERROR 238:duplicate member
*ERROR 239:duplicate parameter
重複定義結構成員或函數參數
*ERROR 240:more than 128 local bit’s
位變量定義總數不能超過128
*ERROR 241:auto segment too large
局部對象要求的空間超過了該模式的最大值。最大棧長定義以下:SMALL-128 字
節,COMPACT-256字節,LARGE-64k
*ERROR 242:too many initializers
初始化對象超限
*ERROR 243:string out of bounds
串中字符數超過了字符數組要求初始化的字符數
*ERROR 244:can’t initialize .bad type or class
試圖初始化位或sfr
*ERROR 245:unknown pragma, line ignored
未知的pragma 語句,所以該行被忽略
*ERROR 246:floating point error
本錯誤發生在浮點變量超過32 位有效字長時,32 位IEEE 格式的浮點值的取值範圍是±
1.75494E-38~±3.402832E+38
*ERROR 247:non_address +/-constant initializer
有效的初始化表達式必須是非地址量+/-常量
*ERROR 248:aggregate initialization needs curly braces
全部的組合變量(數組/結構或聯合)初始化時要用花括號括起來
*ERROR 249:segment<name>:segment too large
編譯器檢測到過大的數據段,最大數據段長取決於存儲器空間
*ERROR 250:‘\esc’;value exceeds 255
串常數中\esc轉義序列的值超過有效域
*ERROR 251:illegal octal digit
不是有效的八進制數字
*ERROR 252:misplace primary control、line ignored
一次性使用的編譯控制僞指令必須在C模塊開頭指定,在#INCLUDE 語句和變量說明以前
*ERROR 253:internal ERROR(ASMGEN\CLASS)
這種錯誤在如下狀況下發生⑴內部函數(如testbit)被不正確激活。它發生在函數原型和實
參表不存在匹配問題的時候。基於這個緣由,頭文件中的使用要適當(intrins.h,string.h)。
⑵C51識別出存在內部一致性錯誤,請向您的銷售代理商查詢
*ERROR 255:switch expression has illegal type
Switch語句中的case語句必須具備類型(u)char,(u)int 或(u)short,其餘類型不容許(如bit)
*ERROR 256:conflicting memory model
Alien 屬性的函數只能使用SMALL模式。函數的參數必須位於內部數據存儲空間
*ERROR 257:alien function can not be reentrant
「alien」屬性的函數不能同時具備「reentrant」屬性,函數的參數不能經過重入棧傳遞,這也
適用於外部「alien」聲明和「alien」函數
*ERROR 258:mspace illegal on struct/union member
不能爲結構聯合成員指定存儲空間,但指向對象的指針能夠
*ERROR 259:pointer: different mspace
當爲指針賦值或作指針比較時,指針未指向存儲在同一存儲空間的對象時,會產生錯誤或者
警告。如:
Char xdata *px;/*px to char in xdata memory*/
Char code *pc;/*pc to char in code memory*/
Void main()
{ char c;
If(px==pc)++c;/*warning 259*/
}
*ERROR 260:pointer truncation
指針轉換時部分偏移量被截斷,此時指針常量(如char xdata)轉爲一個具備較小偏移區的
指針(如char idata)
*ERROR 261:bit in reentrant function
重入函數不能包含位變量,由於位變量不能存於重入棧,而只能位於MCS51CPU的可位尋
址存儲區中如:
Void test () reentrant
{ bit b0;/*illegal*/
Static bit b1;/*legal*/
}
*ERROR 262:’using/disable’: function returns bit
使用屬性using選擇寄存器組的函數或使用關中斷(#pragma disable)功能的函數不能返回
bit類型。如:
Bit test ()using 3/*error 261*/
{ bit b0;
return(b0);
}
*ERROR 263:save-stack overflow/underflow
「#pragama save」最大嵌套級爲8 級。Save 和restore 指令按FIFO 原則工做
*ERROR 264:intrinsic<intrinsic_name>:declaration/ activation error
內部參數定義不正確
*ERROR 265:<name>recursive call to non_reentrant function
發現非重入函數被遞歸調用。直接遞歸用生成代碼可有效查出,間接遞歸調用由L51 發現
L51 鏈接定位器使用錯誤提示
1 警告
警告並不終止L51 的執行。這時產生的程序模塊由程序員本身斟酌使用仍是不使用。可是
此時的列表文件和屏幕顯示可能很是有用。
2 錯誤
錯誤並不終止L51 的執行。這時產生的模塊是不能使用的。可是此時的列表文件和屏幕顯
示可能很是有用。
3 致命錯誤
致命錯誤發生時當即終止L51 的執行。
1警告
*WARNING1:UNSOLVED EXTERNAL SYMBOLS
SYMBOLS: external_name
MODULE: filename (modulename)
指定模塊的外部符號在PUBLIC符號表中找不到
*WARNING2:REFERENCE MADE TO UNSOVED EXTERNAL
SYMBOLS: external_name
MODULE: filename (modulename)
ADDRESS:code_address
訪問了未能匹配的外部符號code地址
*WARNING4:DATA SPACE MEMORY OVERLAP
FROM:byte,bit,address
TO: byte,bit,address
數據空間指定範圍出現覆蓋
*WARNING5:CODE SPACE MEMORY OVERLAP
FROM:byte,bit,address
TO: byte,bit,address
程序空間指定範圍出現覆蓋
*WARNING6:XDATA SPACE MEMORY OVERLAP
FROM:byte,bit,address
TO: byte,bit,address
外部數據空間指定範圍出現覆蓋
*WARNING7:MODULE NAME NOT UNIQUE
MODULE:filename(modulename)
模塊名重名。模塊未處理
*WARNING8:MODULE NAME EXPLICITLY REQUESTED FROMANOTHER FILE
MODULE:filename(modulename)
其餘文件指名要求本模塊名
*WARNING9:EMPTYABSOLUTE SEGMENT
MODULE:filename(modulename)
本模塊包含空的絕對段,因未定位,它可能在不通知的狀況下隨時被覆蓋
*WARNING10:CANNOT DETERMINE ROOT SEGMENT
L51 對輸入文件要求分辨是C51仍是PL/M文件,而後進行流程分析,在沒法肯定的時候,
發出本警告。它發生在主程序被彙編調用的時候,須要程序員用OVERLAP 特殊控制選項
進行干預
*WARNING11:CANNOT FIND SEGMENT OR FUNCTION NAME
NAME:overlap_control_name
在目標模塊中找不到OVERLAP控制選項中規定的段或者函數間調用
*WARNING12:NO REFERENCE BETWEEN SEGMENTS
SEGMENT1:segment_name
SEGMENT2:segment_name
試圖用OVERLAP控制選項刪除原本不存在的段間訪問或者函數間調用
*WARNING13:RECURSIVE CALL TO SEGMENT
SEGMENT:segment_name
CALLER:segment_name
CALLER段遞歸調用SEGMENT段。PL/M51和C51的非重入函數不容許遞歸調用
*WARNING14:IMCOMPIABLE MEMORYMODEL
MODULE:filename(modulename)
MODEL:memory_model
指定模塊試圖與之前不一樣的存儲模式編譯。
*WARNING15:MULTICALL TO SEGMENT
SEGMENT:segment_name
CALLER1:segment_name
CALLER2:segment_name
兩個函數調用同一個函數(如主函數和中斷函數),參數和局部變量將被覆蓋
*WARNING15:UNCALLED SEGMENT,IGNORED FOR OVERLAP PROCESS
SEGMENT:segment_name
所給的段未被調用,已被排除在覆蓋過程以外。
L51錯誤
*ERROR101: SEGMENT COMBINATION ERROR
SEGMENT:segment_name
MODULE:filename(modulename)
因爲鏈接錯誤所給段未能連入類型總段,並被忽略
*ERROR102:EXTERN ATTRIBUTE MISMATCH
SYMBOL:external_name
MODULE:filename(modulename)
所給外部符號名屬性錯,並被忽略
*ERROR103:EXTERN ATTRIBUTE DO NOTMATCH PUBLIC
SYMBOL:public_name
MODULE:filename(modulename)
所給外部符號名屬性與公用符號名不匹配,並被忽略
*ERROR104:MUTIPULIC DEFINITION
SYMBOL:pulic_name
MODULE:filename(modulename)
所給公用符號重名
*ERROR105:PUBLIC REFERS TO IGNORED SEGMENT
SYMBOL:public_name
MODULE:filename(modulename)
所給外部符號名屬性錯,並被忽略
*ERROR106: SEGMENT OVERFLOW
SEGMENT:segment_name
所給段長超過64,未處理
*ERROR107:ADDRESS SPACE OVERLAP
SPACE:space_name
SEGMENT:segment_name
因爲存儲空間不夠,所給類型總段未能裝入,已被忽略
*ERROR108:SEGMENT IN LOCATING CONTROL CANNOTALLOCATED
SEGMENT:segment_name
命令行定位控制中的段因爲屬性問題未能分配
*ERROR109:EMPTY RELOCATABLE SEGMENT
SEGMENT:segment_name
可在定位類型總段長度爲零,未定位
*ERROR110:CANNOT FIND SEGMENT
SEGMENT:segment_name
命令行所給的段在輸入模塊中未找到,被忽略
*ERROR111:SPECIFIED BITADDRESS NOT ON BYTE MEMORY
SEGMENT:segment_name
位地址不在字界上,位段被忽略
*ERROR112:SEGMENT TYPE NOT LEGAL FOR COMMAND
SEGMENT:segment_name
命令行所給的段類型非法,被忽略
*ERROR114:SEGMENT DOES NOT FIT
SPACE:space_name
SEGMENT:segment_name
BASE:base_address
LENGTH: segment_length
因爲所給段的長度或者基地址未定位,故被忽略
*ERROR115:INPAGE SEGMENT IS GREATER THAN 256 BYTES
SEGMENT:segment_name
所給INPAGE 屬性的段長於256字節未能連入類型總段,並被忽略
*ERROR116:INBLOCK SEGMENT IS GREATER THAN 2048 BYTES
SEGMENT:segment_name
所給INBLOCK 屬性的段長於2048字節未能連入類型總段,被忽略
*ERROR117:BITADDRESSABLLE SEGMENT IS GREATER THAN 16 BYTE
SEGMENT:segment_name
所給BITADDRESSABLE 屬性的段長於16 字節未能連入類型總段,被忽略
*ERROR118:REFERENCE MADE TO ERRONEOUS EXTERNAL
SYMBOL:symbol_name
MODULE:file_name(modulename)
ADDRESS:code_address
企圖訪問錯誤的外部程序地址
*ERROR119:REFERENCE MADE TO ERRONEOUS SEGMENT
SYMBOL:symbol_name
MODULE:file_name(modulename)
ADDRESS:code_address
企圖訪問錯誤段的程序地址
*ERROR120:CONTENT BELONGS TO ERROREOUS SEGMENT
SEGMENT:segment_name
MODULE:file_name(modulename)
該內容屬於有錯誤的段
*ERROR121:IMPROPER FIXUP
MODULE:file_name(modulename)
SEGMENTsegment_name
OFFSET:segment_name
根據所給段和偏移地址的到的是不當的地址
*ERROR122:CANNOT FIND MODULE
MODULE:file_name(modulename)
命令行所給的模塊未能找到
L51 致命錯誤
*FATAL ERROR201:INVALID COMMAND LINE SYNTAX
Partial command line
命令行句法錯。命令行顯示到出錯處。
*FATAL ERROR202:INVALID COMMAND LINE ,TOKEN TOO LONG
Partial command line
非法命令行,單詞太長。命令行顯示到出錯處
*FATAL ERROR203:EXPECTED ITEM MISSING
Partial command line
缺項。命令行顯示到出錯處。
*FATAL ERROR204:INVALID KEYWORD
Partial command line
非法關鍵字
*FATAL ERROR205:CONSTANT TOO LONG
Partial command line
常量大於0xffff。命令行顯示到出錯處。
*FATAL ERROR206:INVALID CONSTANT
Partial command line
命令行常量無效(如16 進制數以字母開頭)。命令行顯示到出錯處。
*FATAL ERROR207:INVALID NAME
Partial command line
模塊名或段名無效。命令行顯示到出錯處。
*FATAL ERROR208:INVALID FILENAME
Partial command line
文件名無效。命令行顯示到出錯處。
*FATAL ERROR209:FILE USED IN CONLICTING CONTEXTS
FILE:filename
所給的文件名用於有矛盾之處。命令行顯示到出錯處。
*FATAL ERROR210:I/O ERROR ON INPUT FILE
System error message
FILE:filename
訪問輸入文件時檢測到有錯,並有後面的EXCEPTION 給出具體的錯誤描述
*FATAL ERROR211:I/O ERROR ON OUTPUT FILE
System error message
FILE:filename
訪問輸出文件時檢測到有錯,並有後面的EXCEPTION 給出具體的錯誤描述
*FATAL ERROR212:I/O ERROR ON LISTING FILE
System error message
FILE:filename
訪問列表文件時檢測到有錯,並有後面的EXCEPTION 給出具體的錯誤描述
*FATAL ERROR213:I/O ERROR ONWORK FILE
System error message
FILE:filename
訪問工做文件時檢測到有錯,並有後面的EXCEPTION 給出具體的錯誤描述
*FATAL ERROR214:I/O INPUT PHASE ERROR
MODULE:filename(modulename)
L51 在進行第二次掃描時遇到不一樣的數據發生該錯誤,多是因彙編錯誤引發
*FATAL ERROR215:CHECK SUM ERROR
MODULE:filename(modulename)
校驗和與文件內容不一致
*FATAL ERROR216:INSUFFICIENTMEMORY
MODULE:filename(modulename)
執行L51 的內存空間不夠
*FATAL ERROR217:NO MODULE TO BE PROCESSED
缺乏應該被處理的模塊
*FATAL ERROR218:NOTAN OBJECT FILE
FILE:filename
所給文件非目標文件
*FATAL ERROR219:NOTAN 8051 OBJECT FILE
FILE:filename
所給文件非8051 目標文件
*FATAL ERROR220:INVALID INPUTMODULE
FILE:filename
所給輸入模塊無效,多是由彙編錯誤引發的
*FATAL ERROR221:MODULE SPECIFIED MORE THAN ONCE
Partial command line
命令行上屢次包含同一模塊。命令行顯示到出錯處
*FATAL ERROR222:SEGMENT SPEXIFIED MORE THAN ONCE
Partial command line
命令行上屢次包含同一段。命令行顯示到出錯處
*FATAL ERROR224:DUPLICATE KEYWORD OR CONFLICATING CONTROL
Partial command line
命令行上屢次包含同一關鍵字或者存在相互矛盾的控制選項。命令行顯示到出錯處
*FATAL ERROR225:SEGMENTADDRESS ARE NOT IN ASCENDING ORDER
Partial command line
定位控制的段地址未按照升序顯示。命令行顯示到出錯處
*FATAL ERROR226:SEGMENTADDRESS INVALID FOR CONTROL
Partial command line
定位控制的段的段地址無效。命令行顯示到出錯處
*FATAL ERROR227:PARAMETER OUT RANGE
Partial command line
所給PAGEWIDTH 和PAGELENGTH 參數越界。命令行顯示到出錯處
*FATAL ERROR228:PARAMETER OUT RANGE
Partial command line
命令行上RAMSIZE 參數越界。命令行顯示到出錯處
*FATAL ERROR229:INTERAL PROCESS ERROR
Partial command line
L51 檢測到內部處理錯。請詢問代理商
*FATAL ERROR230:STRARTADDRESS SPECIFIED MORE THAN ONCE
Partial command line
命令行上包含多個未命名組段的起始地址。命令行顯示到出錯處
*FATAL ERROR233:ILLEGAL USE OF *IN OVERLAY CONTROL
Partial command line
命令行OVERLAY 定位選擇非法使用了*號(如*!*或*~*)。命令行顯示到出錯處
E.5 異常信息
L51 某些錯誤的緣由由系統的EXCEPTION 給出。
*EXCEPTION 0021:PATH OR FILE NOT FOUND
路徑名或文件名未找到。
*EXCEPTION 0026H:ILLEGAL FILE ACCESS
試圖寫或者刪除寫保護文件。
*EXCEPTION 0029H:ACCESS FILE DENIED
所給的文件實際是目錄。
*EXCEPTION 002AH:I/O-ERROR
欲寫的驅動器已滿或未準備好。
*EXCEPTION 0101H:ILLEGAL CONTEXT
命令行的語意非法。如對打印機進行讀操做。
附錄 F C51的極限值
*標示符最長255 個字符,通常取32 字符。大小寫不敏感。
*case語句的變量個數沒有限制,僅受可用內存容量和函數的最大長度限制。
*函數嵌套調用最大深度爲10。
*功能塊{….}最大嵌套深度爲15。
*宏最多嵌套爲8。
*函數以及宏的參數最多爲32個。
*語句行和宏定義最多510 個字符(宏擴展後是510個字符)
*頭文件嵌套深度爲20。
*預處理器中的條件編譯層最多爲20。
*關於INTEL目標模塊格式(OMF-51)的極限值。
*函數類型段總和最多256 個。
*全局符號(PUBLIC)最多256 個。
*外部符號(EXTERNAL)最多256 個
 
說明:轉載自

痞子晶的博客

相關文章
相關標籤/搜索