www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]致命錯(cuò)誤致命錯(cuò)誤立即終止編譯這些錯(cuò)誤通常是命令行指定的無效選項(xiàng)的結(jié)果當(dāng)編譯器不能訪問一個(gè)特定的源包含文件時(shí)也產(chǎn)生致命錯(cuò)誤致命錯(cuò)誤信息采用下面的格式C51 FATAL-ERROR –ACTION :LINE: ERROR: C51 TERMIANTED.

致命錯(cuò)誤

致命錯(cuò)誤立即終止編譯這些錯(cuò)誤通常是命令行指定的無效選項(xiàng)的結(jié)果當(dāng)編譯器不

能訪問一個(gè)特定的源包含文件時(shí)也產(chǎn)生致命錯(cuò)誤

致命錯(cuò)誤信息采用下面的格式

C51 FATAL-ERROR –

ACTION :

LINE:

ERROR:

C51 TERMIANTED.

C51 FATAL-ERROR –

ACTION:

FILE:

ERROR:

C51 TERMIANTED.

下面說明Action和Error中可能的內(nèi)容

Actions

ALLOCATING MEMORY

編譯器不能分配足夠的存儲(chǔ)區(qū)來編譯指定的源文件.

CREATING LIST-FILE/OBJECT-FILE/WORKFILE

編譯器不能建立列表文件,OBJ文件,或工作文件這個(gè)錯(cuò)誤的出現(xiàn)可能是磁盤

滿或?qū)懕Wo(hù),或文件已存在和只讀.

GENERATING INTERMEDIATE CODE

源文件包含的一個(gè)函數(shù)太大,不能被編譯器編譯成虛擬代碼.嘗試把函數(shù)分小或

重新編譯.

OPENING INPUT-FILE

編譯器不能發(fā)現(xiàn)或打開所選的源或包含文件.

PARSING INVOKE-/#PRAGMA-LINE

當(dāng)在命令行檢測(cè)到參數(shù)計(jì)算,或在一個(gè)#pragma中檢測(cè)到參數(shù)計(jì)算,就產(chǎn)生這樣

的錯(cuò)誤.

PARSING SOURCE-FILE / ANALYZING DECLARATIONS

源文件包含太多的外部參考.減少源文件訪問的外部變量和函數(shù)的數(shù)目.

WRITING TO FILE

當(dāng)寫入列表文件,OBJ文件,或工作文件時(shí)遇到的錯(cuò)誤.

Errors

‘(‘ AFTER CONTROL EXPECTED

一些控制參數(shù)需要用括號(hào)包含一個(gè)參數(shù).當(dāng)沒有左括號(hào)時(shí)顯示本信息.

‘)’ AFTER PARAMETER EXPECTED

本信息表示包含沒有參數(shù)的右括號(hào).

BAD DIGIT IN NUMBER

一個(gè)控制參數(shù)的數(shù)字參數(shù)包含無效字符.只能是十進(jìn)制數(shù).

CAN’T CREATE FILE

在FILE行定義的文件名不能建立.

CAN’T HAVE GERERAL CONTROL IN INVOCATION LINE

一般控制(例如EJECT)不能包含在命令行.把這些控制用#pragma聲明放在

源文件中.

FILE DOES NOT EXIST

沒有發(fā)現(xiàn)定義在FILE行的文件.

FILE WRITE-ERROR

因?yàn)榇疟P空間不夠,寫到列表,預(yù)打印,工作,或目標(biāo)文件時(shí)出錯(cuò).

IDENTIFIER EXPECTED

當(dāng)DEFINE控制沒有參數(shù)時(shí)產(chǎn)生本信息.DEFINE要求一個(gè)參數(shù)作為標(biāo)識(shí)符.這

和C語言的規(guī)則相同.

MEMORY SPACE EXHAUSTED

編譯器不能分配足夠的存儲(chǔ)區(qū)來編譯指定的源文件.如果始終出現(xiàn)這個(gè)信息,應(yīng)

該把源文件分成兩個(gè)或多個(gè)小文件再重新編譯.

MORE THAN 100 ERRORS IN SOURCE-FILE

在編譯時(shí)檢測(cè)到的錯(cuò)誤超過100個(gè).這使編譯器終止.

MORE THAN 256 SEGMENTS/EXTERNALS

在一個(gè)源文件中的參考超過256.個(gè)單個(gè)的源文件不能有超過256個(gè)函數(shù)或外部參

考.這是INTEL目標(biāo)模塊格式(OMF-51)的歷史的限制.包含標(biāo)量和/或bit聲明

的函數(shù)在OBJ文件中生成兩個(gè),有時(shí)候三個(gè)段定義

NON-NULL ARGUMENT EXPECTED

所選的控制參數(shù)需要用括號(hào)包含一個(gè)參數(shù)(例如,一個(gè)文件名或一個(gè)數(shù)字)

OUT OF RANGE NUMBER

一個(gè)控制參數(shù)的數(shù)字參數(shù)超出范圍.例如OPTIMIZE控制只允許數(shù)字0到6,值

7就將產(chǎn)生本錯(cuò)誤信息.

PARSE STACK OVERFLOW

解析堆棧溢出.如果源程序包含很復(fù)雜的表達(dá)式或如果塊的嵌套深度超過31級(jí),

就會(huì)出現(xiàn)這個(gè)錯(cuò)誤

PREPROCESSOR: LINE TOO LONG( 32K)

一個(gè)中間擴(kuò)展長(zhǎng)度超過32K字符.

PREPROCESSOR: MACROS TOO NESTED

在宏擴(kuò)展期間,預(yù)處理器所用的堆棧太大.這個(gè)信息通常表示一個(gè)遞歸的宏定義,

但也可表示一個(gè)宏嵌套太多.

RESPECIFIED OR CONFLICTING CONTROL

一個(gè)命令行參數(shù)指定了兩次,或命令行參數(shù)沖突.

SOURCE MUST COME FROM A DISK-FILE

源和包含文件必須存在.控制臺(tái)CON;,; CI;,或類似的設(shè)備不能作為輸入文件.

UNKNOWN CONTROL

所選的控制參數(shù)不認(rèn)識(shí).

語法和語義錯(cuò)誤

語法和語義錯(cuò)誤一般出現(xiàn)在源程序中.它們確定實(shí)際的編程錯(cuò)誤.當(dāng)遇到這些錯(cuò)誤時(shí),

編譯器嘗試?yán)@過錯(cuò)誤繼續(xù)處理源文件.當(dāng)遇到更多的錯(cuò)誤時(shí),編譯器輸出另外的錯(cuò)誤,

信息但是不產(chǎn)生OBJ文件.

語法和語義錯(cuò)誤在列表文件中生成一條信息這些錯(cuò)誤信息用下面的格式

*** ERRORnumberIN LINElineOFfile:error message

這里

number錯(cuò)誤號(hào)

line對(duì)應(yīng)源文件或包含文件的行號(hào)

file產(chǎn)生錯(cuò)誤的源或包含文件名

error message對(duì)錯(cuò)誤的敘述說明

下表按錯(cuò)誤號(hào)列出了語法和語義錯(cuò)誤錯(cuò)誤信息列出了主要說明和可能的原因和改正

號(hào)錯(cuò)誤信息和說明

100跳過不可打印字符0x??

在源文件中發(fā)現(xiàn)一個(gè)非法字符.(注意不檢查注釋中的字符)

101字符串沒結(jié)束

一個(gè)字符串沒有用雙引號(hào)終止.

102字符串太長(zhǎng)

一個(gè)字符串不能超過4096個(gè)字符用串聯(lián)符號(hào)在邏輯上可延長(zhǎng)字符串

超過4096個(gè)字符這個(gè)模式的行終止符在詞匯分析時(shí)是連續(xù)的

103無效的字符常數(shù)

一個(gè)字符常數(shù)的格式無效符號(hào)c是無效的除非c是任何可打印的ASCII

字符

125聲明符太復(fù)雜20

一個(gè)目標(biāo)的聲明可包含最多20個(gè)類型修飾符[ ] *這

個(gè)錯(cuò)誤經(jīng)常伴隨著錯(cuò)誤126

126類型堆棧下溢

類型聲明堆棧下溢這個(gè)錯(cuò)誤通常死錯(cuò)誤125的副產(chǎn)品

127無效存儲(chǔ)類

一個(gè)目標(biāo)用一個(gè)無效的存儲(chǔ)空間標(biāo)識(shí)符聲明如果一個(gè)目標(biāo)在一個(gè)函數(shù)外用存

儲(chǔ)類auto或register聲明就會(huì)產(chǎn)生本錯(cuò)誤

129在標(biāo)記前缺少

本錯(cuò)誤通常表示前一行缺少分號(hào)當(dāng)出現(xiàn)本錯(cuò)誤時(shí)編譯器會(huì)產(chǎn)生很多錯(cuò)誤信

130值超出范圍

在一個(gè)using或interrupt標(biāo)識(shí)符后的數(shù)字參數(shù)是無效的using標(biāo)識(shí)符要求一個(gè)0

到3之間的寄存器組號(hào)interrupt標(biāo)識(shí)符要求一個(gè)0到31之間的中斷矢量號(hào)

131函數(shù)參數(shù)重復(fù)

一個(gè)函數(shù)有相同的參數(shù)名在函數(shù)聲明中參數(shù)名必須是唯一的

132沒在正式的參數(shù)列表

一個(gè)函數(shù)的參數(shù)聲明用了一個(gè)名稱沒在參數(shù)名列表中例如

char function(v0,v1,v2)

char *v0,*v1,*v5;

/* ‘v5’沒在正式列表中*/

{

/* … */

}

134函數(shù)的xdata/idata/pdata/data不允許

函數(shù)通常位于code存儲(chǔ)區(qū)不能在別的存儲(chǔ)區(qū)運(yùn)行函數(shù)默認(rèn)定義為存儲(chǔ)類型

code

135 bit的存儲(chǔ)類錯(cuò)

bit標(biāo)量的聲明可能包含一個(gè)static或extern存儲(chǔ)類register或alien類是無效的

136變量用了void

void類型只允許作為一個(gè)不存在的返回值或一個(gè)函數(shù)的空參數(shù)列表void

func(void)或和一個(gè)指針組合void *

138 Interrupt()不能接受或返回值

一個(gè)中斷函數(shù)被定義了一個(gè)或多個(gè)正式的參數(shù)或一個(gè)返回值中斷函數(shù)不能

包含調(diào)用參數(shù)或返回值

140位在非法的存儲(chǔ)空間

bit標(biāo)量的定義可以包含可選的存儲(chǔ)類型data如果沒有存儲(chǔ)類型則默認(rèn)為

data因?yàn)槲煌ǔT趦?nèi)部數(shù)據(jù)存儲(chǔ)區(qū)當(dāng)試圖對(duì)一個(gè)bit標(biāo)量定義別的數(shù)據(jù)類型

時(shí)會(huì)產(chǎn)生本錯(cuò)誤

141臨近標(biāo)志語法錯(cuò)誤期待別的標(biāo)志…

編譯器所見的標(biāo)志是錯(cuò)誤的參考所顯示的期待的內(nèi)容

142無效的基地址

一個(gè)sfr或sbit聲明的基地址是錯(cuò)誤的有效的基地址范圍在0x80到0xFF之間

如果用符號(hào)基地址^位號(hào)聲明則基地址必須是8的倍數(shù)

143無效的絕對(duì)位地址

sbit聲明中的絕對(duì)位地址必須在0x80到0xFF之間

144基地址^位號(hào)無效的位號(hào)

sbit聲明中定義的位號(hào)必須在0到7之間

145未知的sfr

146無效sfr

一個(gè)絕對(duì)位基地址^位號(hào)的聲明包含一個(gè)無效的基地址標(biāo)識(shí)符基地址必

須是已經(jīng)聲明的sfr任何別的名稱是無效的

147目標(biāo)文件太大

單個(gè)目標(biāo)文件不能超過65535 64K字節(jié)-1

149 struct/union包含函數(shù)成員

struct或union不能包含一個(gè)函數(shù)類型的成員但是指向函數(shù)的指針是可以的

150 struct/union包含一個(gè)bit成員

一個(gè)union不能包含bit類型成員這是8051的結(jié)構(gòu)決定的

151 struct/union自我關(guān)聯(lián)

一個(gè)結(jié)構(gòu)不能包含自己

152位號(hào)超出位域

位域聲明中指定的位號(hào)超過給定基類的位號(hào)

153命名的位域不能為零

命名的位域?yàn)榱阒灰疵奈挥蛟试S為零

154位域指針

指向位域的指針不允許

155位域要求char/int

位域的基類要求char或int unsigned char和unsigned int類型也行

156 alien只允許對(duì)函數(shù)

157 alien函數(shù)帶可變參數(shù)

存儲(chǔ)類alien只對(duì)外部PL/M-51函數(shù)允許符號(hào)char *,…在alien函數(shù)中是非

法的PL/M-51函數(shù)通常要求一個(gè)固定的參數(shù)表

158函數(shù)包含未命名的參數(shù)

一個(gè)函數(shù)的參數(shù)列表定義包含一個(gè)未命名的抽象類型定義這個(gè)符號(hào)只允許在

函數(shù)原型中

159 void后面帶類型

函數(shù)的原型聲明可包含一個(gè)空參數(shù)列表例如int func(void)在void后不

能再有類型定義

160 void無效

void類型只在和指針組合或作為一個(gè)函數(shù)的不存在的返回值中是合法的

161忽視了正式參數(shù)

在一個(gè)函數(shù)內(nèi)一個(gè)外部函數(shù)的聲明用了一個(gè)沒有類型標(biāo)識(shí)符的參數(shù)名列表例

如extern yylex(a,b,c);

180不能指向一個(gè)函數(shù)

指向一個(gè)函數(shù)的類型是無效的嘗試用指針指向一個(gè)函數(shù)

181操作數(shù)不兼容

對(duì)給定的操作符至少一個(gè)操作數(shù)類型是無效的例如~float_type

183左值不能修改

要修改的目標(biāo)位于code存儲(chǔ)區(qū)或有const屬性因此不能修改

184 sizeof非法操作數(shù)

sizeof操作符不能確定一個(gè)函數(shù)或位域的大小

185不同的存儲(chǔ)空間

一個(gè)目標(biāo)聲明的存儲(chǔ)空間和前一個(gè)同樣目標(biāo)聲明的存儲(chǔ)空間不同

186解除參照無效

一個(gè)內(nèi)部編譯器問題會(huì)產(chǎn)生本信息如果本錯(cuò)誤重復(fù)出現(xiàn)請(qǐng)和技術(shù)支持接洽

187不是一個(gè)左值

所需的參數(shù)必須是一個(gè)可修改的目標(biāo)地址

188未知目標(biāo)大小

因?yàn)闆]有一個(gè)數(shù)組的維數(shù)或間接通過一個(gè)void指針一個(gè)目標(biāo)的大小不能計(jì)

189 &對(duì)bit/sfr非法

取地址符’&’不允許對(duì)bit目標(biāo)或特殊函數(shù)寄存器sfr

190 &不是一個(gè)左值

嘗試建立一個(gè)指針指向一個(gè)未知目標(biāo)

193非法操作類型

193對(duì)ptr非法add/sub
193對(duì)bit的非法操作

193錯(cuò)誤操作數(shù)類型

當(dāng)對(duì)一個(gè)給定的操作符用了非法的操作數(shù)類型時(shí)產(chǎn)生本錯(cuò)誤例如無效的表

達(dá)式如bit*bitptr+ptr或ptr*anything這個(gè)錯(cuò)誤信息包括引起錯(cuò)誤的操作

下面的操作對(duì)bit類型的操作數(shù)是可行的

??賦值=

??OR/復(fù)合OR ||=

??AND/復(fù)合AND& &=

??XOR/復(fù)合XOR^ ^=

??bit比較= = !=

??取反~

bit操作數(shù)可和別的數(shù)據(jù)類型在表達(dá)式中混用在這種情況類型轉(zhuǎn)換自動(dòng)執(zhí)行

194 *間接指向一個(gè)未知大小的目標(biāo)

間接操作符*不能和void指針合用因?yàn)橹羔標(biāo)傅哪繕?biāo)的大小是未知的

195 *間接非法

*操作符不能用到非指針參數(shù)

196存儲(chǔ)空間可能無效

轉(zhuǎn)換一個(gè)常數(shù)到一個(gè)指針常數(shù)產(chǎn)生一個(gè)無效的存儲(chǔ)空間例如char

*p=0x91234

198 sizeof返回零

sizeof操作符返回一個(gè)零

199 ->’的左邊要求struct/union指針

->操作符的左邊參數(shù)必須是一個(gè)struct指針或一個(gè)union指針

200 .左邊要求struct/union

.操作符的左邊參數(shù)要求必須是struct或union類型

201未定義的struct/union

給定的struct或union名是未知的

202未定義的標(biāo)識(shí)符

給定的標(biāo)識(shí)符是未定義的

203錯(cuò)誤的存儲(chǔ)類參考名

本錯(cuò)誤表示編譯器的一個(gè)問題如果重復(fù)出現(xiàn)請(qǐng)接洽技術(shù)支持

204未定義的成員

給定的一個(gè)struct或union成員名是未定義的

205不能調(diào)用一個(gè)中斷函數(shù)

一個(gè)中斷函數(shù)不能象一個(gè)正常函數(shù)一樣調(diào)用中斷的入口和退出代碼是特殊

207參數(shù)列表聲明為void

參數(shù)列表聲明為void的函數(shù)不能從調(diào)用者接收參數(shù)

208太多的實(shí)參

函數(shù)調(diào)用包含太多的實(shí)參

209太少的實(shí)參

調(diào)用函數(shù)包含太少的實(shí)參

210太多的嵌套調(diào)用

函數(shù)的嵌套調(diào)用不能超過10級(jí)

211調(diào)用不是對(duì)一個(gè)函數(shù)

一個(gè)函數(shù)的調(diào)用項(xiàng)不是對(duì)一個(gè)函數(shù)或函數(shù)指針求值

212間接調(diào)用寄存器的參數(shù)不匹配

通過一個(gè)指針的間接函數(shù)調(diào)用不包含實(shí)際的參數(shù)一個(gè)例外是當(dāng)所有的參數(shù)可

以通過寄存器傳遞這是由于Cx51所用的傳遞參數(shù)的方法被調(diào)用的函數(shù)名

必須是已知的因?yàn)閰?shù)寫到被調(diào)用函數(shù)的數(shù)據(jù)段但是對(duì)間接調(diào)用來說

被調(diào)用函數(shù)的名稱是未知的

213賦值符的左邊不是一個(gè)左值

賦值符的左邊要求一個(gè)可修改目標(biāo)的地址

214非法指針轉(zhuǎn)換

bit float或集合類型的目標(biāo)不能轉(zhuǎn)換為指針

215非法類型轉(zhuǎn)換

struct/union/void不能轉(zhuǎn)換為任何別的類型

216標(biāo)號(hào)用在非數(shù)組中或維數(shù)超出

一個(gè)數(shù)組引用包含太大的維數(shù)或目標(biāo)不是一個(gè)數(shù)組

217非整數(shù)索引

一個(gè)數(shù)組的維數(shù)表達(dá)式必須是char unsigned char int或unsigned int類型

別的類型都是非法的

218控制表達(dá)式用了void類型

在一個(gè)while for或do的限制表達(dá)式中不能用類型void

219 long常數(shù)縮減為int

一個(gè)常數(shù)表達(dá)式的值必須能用一個(gè)int類型表示

220非法常數(shù)表達(dá)式

期望一個(gè)常數(shù)表達(dá)式目標(biāo)名變量或函數(shù)不允許出現(xiàn)在常數(shù)表達(dá)式中

221非常數(shù)case/dim表達(dá)式

一個(gè)case或一個(gè)維數(shù)[ ]必須是一個(gè)常數(shù)表達(dá)式

222被零除

223被零取模

編譯器檢測(cè)到一個(gè)被零除或取模

225表達(dá)式太復(fù)雜需簡(jiǎn)化

一個(gè)表達(dá)式太復(fù)雜必須分成兩個(gè)或多個(gè)子表達(dá)式

226重復(fù)的struct/union/enum標(biāo)記

一個(gè)struct union或enum名早已定義

227表示一個(gè)union標(biāo)記

一個(gè)union名稱早已定義為別的類型

228表示一個(gè)struct標(biāo)記

一個(gè)struct名早已定義為別的類型

229表示一個(gè)enum標(biāo)記

一個(gè)enum名早已定義為別的類型

230未知的struct/union/enum標(biāo)記

指定的struct union或enum名未定義

231重復(fù)定義

指定的名稱已被定義

232重復(fù)標(biāo)號(hào)

指定的標(biāo)號(hào)已定義

233未定義標(biāo)號(hào)

表示一個(gè)標(biāo)號(hào)未定義有時(shí)候這個(gè)信息會(huì)在實(shí)際的標(biāo)號(hào)的幾行后出現(xiàn)這是所

用的未定義標(biāo)號(hào)的搜索方法引起的

234 {堆棧范圍溢出31

超過了最多31個(gè)嵌套塊超出的嵌套塊被忽略

235參數(shù)<數(shù)字>不同類型

函數(shù)聲明的參數(shù)類型和函數(shù)原型中的不同

236參數(shù)列表的長(zhǎng)度不同

函數(shù)聲明中的參數(shù)數(shù)目和函數(shù)原型中的不同

237函數(shù)早已定義

試圖聲明一個(gè)函數(shù)體兩次

238重復(fù)成員

239重復(fù)參數(shù)

試圖定義一個(gè)已存在的struct成員或函數(shù)參數(shù)

240超出128個(gè)局部bit

在一個(gè)函數(shù)內(nèi)不能超過128個(gè)bit標(biāo)量

241 auto段太大

局部目標(biāo)所需的空間超過模式的極限最大的段大小定義如下

SMALL128字節(jié)

COMPACT256字節(jié)

LARGE65535字節(jié)

242太多的初始化軟件

初始化軟件的數(shù)目超過初始化目標(biāo)的數(shù)量

243字符串超出范圍

字符串中的字符數(shù)目超出字符串初始化的數(shù)目

244不能初始化錯(cuò)誤的類型或類

試圖初始化一個(gè)bit或sfr

245未知的pragma跳過本行

#pragma狀態(tài)未知所以整行被忽略

246浮點(diǎn)錯(cuò)誤

當(dāng)一個(gè)浮點(diǎn)參數(shù)超出32位的范圍就產(chǎn)生本錯(cuò)誤32位IEEE值的范圍是

±1.175494E-38到±3.402823E+38

247非地址/常數(shù)初始化

一個(gè)有效的初始化表達(dá)式必須是一個(gè)常數(shù)值求值或一個(gè)目標(biāo)名加或減去一個(gè)常

數(shù)

248集合初始化需要大括號(hào)

給定struct或union初始化缺少大括號(hào){}

249段<名>段太大

編譯器檢測(cè)到一個(gè)數(shù)據(jù)段太大一個(gè)數(shù)據(jù)段的最大的大小由存儲(chǔ)空間決定

250 esc值超過255

一個(gè)字符串常數(shù)中的轉(zhuǎn)義序列超過有效值范圍最大值是255

252非法八進(jìn)制數(shù)

指定的字符不是一個(gè)有效的八進(jìn)制數(shù)

252主要控制放錯(cuò)地方行被忽略

主要控制必須被指定在C模塊的開頭在任何#include命令或聲明前

253內(nèi)部錯(cuò)誤ASMGENCLASS

在下列情況下出現(xiàn)本錯(cuò)誤

??一個(gè)內(nèi)在函數(shù)例如_testbit_被錯(cuò)誤激活這種情況是在沒有函數(shù)原

型存在和實(shí)參數(shù)目或類型錯(cuò)誤對(duì)這種原因必須使用合適的聲明文件

INTRINS.H STRING.H參考第八章中的instrinsic函數(shù)

??Cx51確認(rèn)一個(gè)內(nèi)部一致性問題請(qǐng)接洽技術(shù)支持

255 switch表達(dá)式有非法類型

在一個(gè)switch表達(dá)式?jīng)]有合法的數(shù)據(jù)類型

256存儲(chǔ)模式?jīng)_突

一個(gè)包含alien屬性的函數(shù)只能包含模式標(biāo)識(shí)符small函數(shù)的參數(shù)必須位于內(nèi)

部數(shù)據(jù)區(qū)這適用于所有的外部alien聲明和alien函數(shù)例如

alien plm_func(char c) large {…}

產(chǎn)生錯(cuò)誤256

257 alien函數(shù)不能重入

一個(gè)包含alien屬性的函數(shù)不能同時(shí)包含reentrant屬性函數(shù)參數(shù)不能跳過虛擬

堆棧傳遞這適用于所有的外部alien聲明和alien函數(shù)

258 struct/union成員的存儲(chǔ)空間非法

非法空間的參數(shù)被忽略

一個(gè)結(jié)構(gòu)的成員或參數(shù)不能包含一個(gè)存儲(chǔ)類型標(biāo)識(shí)符但指針?biāo)傅哪繕?biāo)可

能包含一個(gè)存儲(chǔ)類型例如

struct vp{char code c;int xdata i; };

產(chǎn)生錯(cuò)誤258

struct v1{char c;int xdata *i; };

是正確的struct聲明

259指針不同的存儲(chǔ)空間

一個(gè)空指針被關(guān)聯(lián)到別的不同存儲(chǔ)空間的空指針例如

char xdata *p1;

char idata *p2;

p1 = p2; /*不同的存儲(chǔ)空間*/

260指針斷開

一個(gè)空指針被關(guān)聯(lián)到一些常數(shù)值這些值超過了指針存儲(chǔ)空間的值范圍例如

char idata *p1 = 0x1234; /*結(jié)果是0x34 */

261 reentrant()內(nèi)有bit

一個(gè)可重入屬性的函數(shù)的聲明中不能包含bit目標(biāo)例如

int func1(int i1) reentrant {

bit b1,b2; /*不允許*/

return(i1-1);

}

262 using/disable不能返回bit值

用using屬性聲明的函數(shù)和禁止中斷#pragma disable的函數(shù)不能返回一個(gè)bit

值給調(diào)用者例如

bit test(void) using 3

{

bit b0;

return(b0);

}

產(chǎn)生錯(cuò)誤262

263保存/恢復(fù)堆棧保存溢出/下溢

#pragma save的最大嵌套深度是八級(jí)堆棧的pragma save和restore工作根據(jù)

LIFO后進(jìn)先出規(guī)則

264內(nèi)在的<內(nèi)在的名稱>聲明/激活錯(cuò)誤

本錯(cuò)誤表示一個(gè)內(nèi)在的函數(shù)錯(cuò)誤定義參數(shù)數(shù)目或省略號(hào)如果用標(biāo)準(zhǔn)的.H

文件就不會(huì)產(chǎn)生本錯(cuò)誤確認(rèn)使用了Cx51所有的.H文件不要嘗試對(duì)內(nèi)在的

庫(kù)函數(shù)定義自己的原型

265對(duì)非重入函數(shù)遞歸調(diào)用

非重入函數(shù)不能被遞歸調(diào)用因?yàn)檫@樣會(huì)覆蓋函數(shù)的參數(shù)和局部數(shù)據(jù)如果需

要遞歸調(diào)用需聲明函數(shù)為可重入函數(shù)

267函數(shù)定義需要ANSI類型的原型

一個(gè)函數(shù)被帶參數(shù)調(diào)用但是聲明是一個(gè)空的參數(shù)列表原型必須有完整的參

數(shù)類型這樣編譯器就可能通過寄存器傳遞參數(shù)和適合應(yīng)用的調(diào)用機(jī)制

268任務(wù)定義錯(cuò)誤任務(wù)ID/優(yōu)先級(jí)/using

任務(wù)聲明錯(cuò)誤

271 asm/endasm控制放錯(cuò)地方

asm和endasm聲明不能嵌套endasm要求一個(gè)匯編塊前面用asm開頭例如

#pragma asm

...

匯編指令

... #pragma endasm

272 asm要求激活SRC控制

在一個(gè)源文件中使用asm和endasm要求文件用SRC控制編譯那么編譯器就

會(huì)生成匯編源文件然后可以用A51匯編

273 asm/endasm在包含文件中不允許

在包含文件中不允許asm和endasm為了調(diào)試在包含文件不能有任何的可執(zhí)

行代碼

274非法的絕對(duì)標(biāo)識(shí)符

絕對(duì)地址標(biāo)識(shí)符對(duì)位目標(biāo)函數(shù)和局部函數(shù)不允許地址必須和目標(biāo)的存儲(chǔ)

空間一致例如下面的聲明是無效的因?yàn)殚g接尋址的范圍是0x00到0xFF

idata int _at_ 0x1000;

278常數(shù)太大

當(dāng)浮點(diǎn)參數(shù)超出32位的浮點(diǎn)值范圍就產(chǎn)生本錯(cuò)誤32位IEEE值的范圍是

±1.175494E-38到±3.402823E+38

279多次初始化

試圖多次初始化一個(gè)目標(biāo)

280沒有使用符號(hào)/標(biāo)號(hào)/參數(shù)

在一個(gè)函數(shù)中聲明了一個(gè)符號(hào)標(biāo)號(hào)或參數(shù)但沒有使用

281非指針類型轉(zhuǎn)換為指針

引用的程序目標(biāo)不能轉(zhuǎn)換成一個(gè)指針

282不是一個(gè)SFR引用

本函數(shù)調(diào)用要求一個(gè)SFR作為參數(shù)

283asmparms參數(shù)不適合寄存器

參數(shù)不適合可用的CPU寄存器

284 <名稱>:在可覆蓋空間函數(shù)不再可重入

一個(gè)可重入函數(shù)包含對(duì)局部變量的明確的存儲(chǔ)類型標(biāo)識(shí)符函數(shù)不再

完全可重入

300注釋未結(jié)束

一個(gè)注釋沒有一個(gè)結(jié)束符*/

301期望標(biāo)識(shí)符

一個(gè)預(yù)處理器命令期望一個(gè)標(biāo)識(shí)符

302誤用#操作符

字符操作符#沒有帶一個(gè)標(biāo)識(shí)符

303期望正式參數(shù)

字符操作符#沒有帶一個(gè)標(biāo)識(shí)符表示當(dāng)前所定義的宏的一個(gè)正式

參數(shù)名

304錯(cuò)誤的宏參數(shù)列表

宏參數(shù)列表沒有一個(gè)大括號(hào)逗號(hào)分開的標(biāo)識(shí)符列表

305 string/char常數(shù)未結(jié)束

一個(gè)字符串活字符常數(shù)是無效的典型的后引號(hào)丟失

306宏調(diào)用未結(jié)束

預(yù)處理器在收集和擴(kuò)展一個(gè)宏調(diào)用的實(shí)際的參數(shù)時(shí)遇到輸入文件的結(jié)

號(hào)錯(cuò)誤信息和說明

307宏名稱參數(shù)計(jì)算不匹配

在一個(gè)宏調(diào)用中實(shí)際的參數(shù)數(shù)目和宏定義的參數(shù)數(shù)目不匹配本錯(cuò)

誤表示指定了太少的參數(shù)

308無效的整數(shù)常數(shù)表達(dá)式

一個(gè)if/elif命令的數(shù)學(xué)表達(dá)式包含一個(gè)語法錯(cuò)誤

309錯(cuò)誤或缺少文件名

在一個(gè)include命令中的文件名參數(shù)是無效的或沒有

310條件嵌套過多20

源文件包含太多的條件編譯嵌套命令最多允許20級(jí)嵌套

311 elif/else控制放錯(cuò)地方

312 endif控制放錯(cuò)地方

命令elif else和endif只有在if ifdef或ifndef命令中是合法的

313不能清除預(yù)定義的宏名稱

試圖清除一個(gè)預(yù)定義宏用戶定義的宏可以用#undef命令刪除預(yù)定

義的宏不能清除

314 #命令語法錯(cuò)誤

在一個(gè)預(yù)處理器命令中字符#必須跟一個(gè)新行或一個(gè)預(yù)處理器

命令名例如if/define/ifdef …

315未知的#命令名稱

預(yù)處理器命令是未知的

316條件未結(jié)束

到文件結(jié)尾endif的數(shù)目和if或ifdef的數(shù)目不匹配

318不能打開文件文件名

指定的文件不能打開

319文件不是一個(gè)磁盤文件

指定的文件不是一個(gè)磁盤文件文件不能編輯

320用戶自定義的內(nèi)容

本錯(cuò)誤號(hào)未預(yù)處理器的#error命令保留#error命令產(chǎn)生錯(cuò)誤號(hào)320

送出用戶定義的錯(cuò)誤內(nèi)容終止編譯器生成代碼

321缺少<字符>

在一個(gè)include命令的文件名參數(shù)中缺少結(jié)束符例如

#include

325正參名稱重復(fù)

一個(gè)宏的正參只能定義一次

326宏體不能以##開始或結(jié)束

##不能是一個(gè)宏體的開始或結(jié)束

327宏宏名超過50個(gè)參數(shù)

每個(gè)宏的參數(shù)數(shù)目不能超過50

警告

警告產(chǎn)生潛在問題的信息他們可能在目標(biāo)程序的運(yùn)行過程中出現(xiàn)警告不妨礙源文

件的編譯

警告在列表文件中生成信息警告信息用下面的格式

*** WARNINGnumberIN LINElineOFfile:warning message

這里

number錯(cuò)誤號(hào)

line在源文件或包含文件中的對(duì)應(yīng)行號(hào)

file錯(cuò)誤產(chǎn)生的源或包含文件名

warning message警告的內(nèi)容

下表按號(hào)列出了警告警告信息包括一個(gè)主要的內(nèi)容和可能的原因和糾正措施

號(hào)警告信息和說明

173缺少返回表達(dá)式

一個(gè)函數(shù)返回一個(gè)除了int類型以外的別的類型的值必須包含一個(gè)

返回聲明包括一個(gè)表達(dá)式為了兼容舊的程序?qū)Ψ祷匾粋€(gè)int值

的函數(shù)不作檢查

182指針指向不同的目標(biāo)

一個(gè)指針關(guān)聯(lián)了一個(gè)不同類型的地址

185不同的存儲(chǔ)空間

一個(gè)目標(biāo)聲明的存儲(chǔ)空間和前面聲明的同樣目標(biāo)的存儲(chǔ)空間不同

196存儲(chǔ)空間可能無效

把一個(gè)無效的常數(shù)值分配給一個(gè)指針無效的指針常數(shù)是long或

unsigned long編譯器對(duì)指針采用24位3字節(jié)低16位代表偏移

高8位代表選擇的存儲(chǔ)空間

198 sizeof返回零

一個(gè)目標(biāo)的大小計(jì)算結(jié)果為零如果目標(biāo)是外部的或如果一個(gè)數(shù)組

的維數(shù)沒有全知道則值是錯(cuò)誤的

號(hào)警告信息和說明

206缺少函數(shù)原型

因?yàn)闆]有原型聲明被調(diào)用的函數(shù)是未知的調(diào)用一個(gè)未知的函數(shù)通

常是危險(xiǎn)的參數(shù)的數(shù)目和實(shí)際要求不一樣如果是這種情況函數(shù)

調(diào)用不正確

沒有函數(shù)原型編譯器不能檢查參數(shù)的數(shù)目和類型要避免這種警告

應(yīng)在程序中包含函數(shù)的原型

函數(shù)原型必須在函數(shù)被調(diào)用前聲明注意函數(shù)定義自動(dòng)生成原型

209實(shí)參太少

在一個(gè)函數(shù)調(diào)用中包含太少的實(shí)參

219 long常數(shù)被縮減為int

一個(gè)常數(shù)表達(dá)式的值必須能被一個(gè)int類型所表示

245未知的pragma本行被忽略

#pragma聲明是未知的因此整行程序被忽略

258 struct/union成員的存儲(chǔ)空間方法

參數(shù)的存儲(chǔ)空間被忽略

一個(gè)結(jié)構(gòu)的成員或一個(gè)參數(shù)不能指定存儲(chǔ)類型但是指針?biāo)傅哪?/p>

標(biāo)可以包含一個(gè)存儲(chǔ)類型例如

struct vp{ char code c;int xdata i; };

產(chǎn)生警告258

struct v1{ char c;int xdata *i; };

對(duì)struct是正確的聲明

259指針不同的存儲(chǔ)空間

兩個(gè)要比較的指針沒有引用相同的存儲(chǔ)類型的目標(biāo)

260指針折斷

把一個(gè)指針轉(zhuǎn)換為一個(gè)更小偏移區(qū)的指針轉(zhuǎn)換會(huì)完成但大指針的

偏移會(huì)折斷來適應(yīng)小指針

261 bit在重入函數(shù)

一個(gè)reentrant函數(shù)不能包含bit因?yàn)閎it標(biāo)量不能保存在虛擬堆棧中

265名稱對(duì)非重入函數(shù)遞歸調(diào)用

發(fā)現(xiàn)對(duì)一個(gè)非重入函數(shù)直接遞歸這可能是故意的但對(duì)每個(gè)獨(dú)立的

情況進(jìn)行功能性檢查通過生成的代碼間接遞歸由連接/定位器檢

號(hào)警告信息和說明

271 asm/endams控制放錯(cuò)地方

asm和endasm不能嵌套endasm要求一個(gè)以asm聲明開頭的匯編塊

例如

#pragma asm

...

匯編指令

...

#pragma endasm

275表達(dá)式可能無效

編譯器檢測(cè)到一個(gè)表達(dá)式不生成代碼例如

void test(void) {

int i1,i2,i3;

i1,i2,i3; /*死表達(dá)式*/

i1 << i3; /*結(jié)果未使用*/

}

276常數(shù)在條件表達(dá)式

編譯器檢測(cè)到一個(gè)條件表達(dá)式有一個(gè)常數(shù)值在大多數(shù)情況下是一個(gè)

輸入錯(cuò)誤例如

void test(void) {

int i1,i2,i3;

if( i1 = 1) i2 = 3; /*常數(shù)被賦值*/

while( i3 = 2); /*常數(shù)被賦值*/

}

277指針有不同的存儲(chǔ)空間

一個(gè)typedef聲明的存儲(chǔ)空間沖突例如

typedef char xdata XCC; /*存儲(chǔ)空間xdata */

typedef XCC idata PICC; /*存儲(chǔ)空間沖突*/

280符號(hào)/標(biāo)號(hào)未使用

一個(gè)符號(hào)或標(biāo)號(hào)定義但未使用

307宏名稱參數(shù)計(jì)算不匹配

一個(gè)宏調(diào)用的實(shí)參的數(shù)目和宏定義的參數(shù)數(shù)目不匹配表示用了太多

的的參數(shù)過剩的參數(shù)被忽略

317宏名稱重新定義無效

一個(gè)預(yù)定義的宏不能重新定義或清除參考138頁(yè)的預(yù)定義宏常數(shù)

322未知的標(biāo)識(shí)符

在一個(gè)#if命令行的標(biāo)識(shí)符未定義等效為FALSE

323期望新行發(fā)現(xiàn)多余字符

一個(gè)#命令行正確但包含多余的非注釋字符例如

#include foo

324期望預(yù)處理器記號(hào)

期望一個(gè)預(yù)處理器記號(hào)但輸入的是一個(gè)新行例如#line這里缺

少#line命令的參數(shù)


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

北京2024年8月8日 /美通社/ -- 近日,軟通動(dòng)力T6司庫(kù)管理系統(tǒng)、票據(jù)管理系統(tǒng)IDMS、醫(yī)共體一體化管理平臺(tái)三款產(chǎn)品獲鯤鵬原生開發(fā)認(rèn)證(Kunpeng NATIVE)。這是軟通動(dòng)力自年初正式啟動(dòng)鯤鵬原生開發(fā)以來,...

關(guān)鍵字: PEN 編譯 DEVKIT 操作系統(tǒng)

單片機(jī)內(nèi)部有很多的特殊功能寄存器,每個(gè)寄存器在單片機(jī)內(nèi)部都分配有唯一的地址,一般我們會(huì)根據(jù)寄存器功能的不同給寄存器賦予各自的名稱,當(dāng)我們需要在程序中操作這些特殊功能寄存器時(shí),必須要在程序的最前面將這些名稱加以聲明,聲明的...

關(guān)鍵字: C51 數(shù)據(jù)類型 擴(kuò)充定義

數(shù)據(jù)元(Data Element),也稱為數(shù)據(jù)元素,是用一組屬性描述其定義、標(biāo)識(shí)、表示和允許值的數(shù)據(jù)單元,在一定語境下,通常用于構(gòu)建一個(gè)語義正確、獨(dú)立且無歧義的特定概念語義的信息單元。數(shù)據(jù)元可以理解為數(shù)據(jù)的基本單元,將若...

關(guān)鍵字: C51 數(shù)據(jù)類型

KeilμVision4是Keil軟件公司為8051系列微控制器及其兼容產(chǎn)品設(shè)計(jì)的集成式軟件開發(fā)環(huán)境。μVision4集成了C51編譯器和A51匯編器,其界面類似于Microsoft VS,支持C語言和匯編語言程序的編寫...

關(guān)鍵字: 程序 編譯 鏈接

第五屆中國(guó)國(guó)際進(jìn)口博覽會(huì),丹納赫集團(tuán)攜手中國(guó)健康傳媒集團(tuán),在創(chuàng)新技術(shù)在疫苗、細(xì)胞治療藥物、中藥研發(fā)以及質(zhì)量控制中的應(yīng)用等領(lǐng)域簽署戰(zhàn)略合作。同時(shí),雙方將共同編譯并出版《生物制藥工藝》等書籍,以支持相關(guān)領(lǐng)域國(guó)際前沿技術(shù)工具在...

關(guān)鍵字: 編譯 質(zhì)量控制

(全球TMT2022年9月27日訊)新思科技近日宣布推出業(yè)內(nèi)首款基于其ZeBu? EP1硬件仿真系統(tǒng)的硬件仿真與原型驗(yàn)證統(tǒng)一硬件系統(tǒng),致力為SoC驗(yàn)證和前期軟件開發(fā)提供更高水平的性能和靈活性。新思科技ZeBu...

關(guān)鍵字: 硬件仿真 新思科技 硬件系統(tǒng) 編譯

3個(gè)SystemVerilog新特性!01`begin_keyword`end_keyword硬件描述語言中有很多特殊的編譯或者綜合等工具的預(yù)執(zhí)行指令,在某些場(chǎng)景下我們可以利用一下HDL之外的語法去指導(dǎo)工具,而不是信馬由...

關(guān)鍵字: SYSTEMVERILOG DEFINE PACKAGE 編譯

你知道,為什么在C中使用了pow函數(shù)不需要鏈接libm庫(kù)嗎?什么情況需要指定鏈接庫(kù)?在解釋之前,先回顧一下。//來源:公眾號(hào)【編程珠璣】//https://www.yanbinghu.com#include#includ...

關(guān)鍵字: 編譯 POW IBM TEST

▼點(diǎn)擊下方名片,關(guān)注公眾號(hào)▼歡迎關(guān)注【玩轉(zhuǎn)單片機(jī)與嵌入式】公眾號(hào),回復(fù)關(guān)鍵字獲取更多免費(fèi)資料?;貜?fù)【加群】,限時(shí)免費(fèi)進(jìn)入知識(shí)共享群;回復(fù)【3D封裝庫(kù)】,常用元器件的3D封裝庫(kù);回復(fù)【電容】,獲取電容、元器件選型相關(guān)的內(nèi)容...

關(guān)鍵字: C51 MDK RealView

????關(guān)注、星標(biāo)公眾號(hào),直達(dá)精彩內(nèi)容作者:hguisu一、地址概念和程序如何運(yùn)行在多道程序環(huán)境下,要使程序運(yùn)行,必須先為之創(chuàng)建進(jìn)程。而創(chuàng)建進(jìn)程的第一件事,便是將程序和數(shù)據(jù)裝入內(nèi)存。如何將一個(gè)用戶源程序變?yōu)橐粋€(gè)可在內(nèi)存中...

關(guān)鍵字: 編譯
關(guān)閉