Turbo C 編譯出錯(cuò)信息
Turbo C 編譯程序查出的源程序錯(cuò)誤分為三類:嚴(yán)重錯(cuò)誤、一般錯(cuò)誤和警告。
1:嚴(yán)重錯(cuò)誤(fatal error):很少出現(xiàn),它通常是內(nèi)部編譯出錯(cuò)。在發(fā)生嚴(yán)
重錯(cuò)誤時(shí),編譯立即停止,必需采取一些適當(dāng)?shù)拇胧┎⒅匦戮幾g。
2:一般錯(cuò)誤(error ):指程序的語(yǔ)法錯(cuò)誤以及磁盤、內(nèi)存或命令行錯(cuò)誤等。
編譯程序?qū)⑼瓿涩F(xiàn)階段的編譯,然后停止。編譯程序在每個(gè)階段( 預(yù)處理、語(yǔ)法分
析、優(yōu)化、代碼生成 )將盡可能多地找出源程序中的錯(cuò)誤。
3:警告(warning ):不阻止編譯的繼續(xù)進(jìn)行。它指出一些值得懷疑的情況,
而這些情況本身又可以合理地作為源程序的一部分。一旦在在源文件中使用了與機(jī)
器有關(guān)的結(jié)構(gòu),編譯程序就會(huì)產(chǎn)生警告信息。
編譯程序首先輸出這三類出錯(cuò)信息,然后輸出源文件名和發(fā)現(xiàn)出錯(cuò)的行號(hào),最
后輸出信息的內(nèi)容。
下面按字母順序分別列出了這三類出錯(cuò)信息。對(duì)每一條信息,均指出了可能產(chǎn)
生的原因和糾正方法。
1:嚴(yán)重錯(cuò)誤
Bad call of inline function 內(nèi)部函數(shù)的不合法調(diào)用;在使用一個(gè)宏定
義的內(nèi)部函數(shù)時(shí),沒(méi)有正確調(diào)用。一個(gè)內(nèi)部函數(shù)以兩個(gè)下劃線(_ _)開始和結(jié)束。
Irreducible expresson tree 不可約表達(dá)式樹;文件中的表達(dá)式使得代
碼生成程序無(wú)法為其產(chǎn)生代碼。應(yīng)避免使用這種表達(dá)式。
Register allocation failure 存儲(chǔ)器分配失敗;源文件中表達(dá)式太復(fù)雜,
代碼生成程序無(wú)法為它生成代碼。此時(shí)應(yīng)簡(jiǎn)化這種繁瑣的表達(dá)式或干脆不使用它。
2:一般錯(cuò)誤:
#operator not followed by macro argument name “#”運(yùn)算符后沒(méi)跟宏
變?cè)辉诤甓x中,,#用來(lái)標(biāo)識(shí)一宏變?cè)?#8220;#”后必須跟一宏變?cè)?br> ‘xxx’not an argument “xxx”不是函數(shù)參數(shù); 在源程序中將該標(biāo)識(shí)符
定義為一個(gè)函數(shù)參數(shù),但此標(biāo)識(shí)符沒(méi)有在函數(shù)的參數(shù)表中出現(xiàn)。
Ambiguous symbol‘xxx’ “xxx”是歧義性符號(hào);兩個(gè)或多個(gè)結(jié)構(gòu)體的某
一域名(結(jié)構(gòu)體變量)相同,但具有的位移、類型不同。在變量或表達(dá)式引用結(jié)構(gòu)
體分量而未帶結(jié)構(gòu)名時(shí),將產(chǎn)生歧義。這時(shí)需要修改某個(gè)域名或在引用時(shí)加上結(jié)構(gòu)
名。
Argument # missing name 參數(shù)#名丟失; 參數(shù)名已脫離用于定義函數(shù)的
函數(shù)原型。如果函數(shù)以原型定義,則該函數(shù)必須包含所有的參數(shù)名。
Argument list syntax error 參數(shù)表出現(xiàn)語(yǔ)法錯(cuò)誤;函數(shù)調(diào)用的一組參數(shù)
其間必須以一逗號(hào)隔開,并以一右括號(hào)結(jié)束。若源文件中包含有一個(gè)其后不是逗號(hào)
也不是右括號(hào)的參數(shù),則出現(xiàn)此錯(cuò)。
Array bound missing 數(shù)組的界限符“]”丟失;在源文件中定義了一個(gè)數(shù)
組,但此數(shù)組沒(méi)有以一右方括號(hào)結(jié)束。
Array size too large 數(shù)組長(zhǎng)度過(guò)大;定義的數(shù)組太大,可用內(nèi)存不夠。
Assemble statement too long 匯編語(yǔ)句太長(zhǎng); 直接插入的匯編語(yǔ)句長(zhǎng)度
不能超過(guò)480字節(jié)。
Bad configuration file 配置文件不正確;TURBOC.CFG配置文件中包含不
是合適命令行選擇的非注釋文字。配置文件命令選擇項(xiàng)必須以一短橫線(-)開始。
Bad file name format in include directive 包含命令中文件名格式不
正確;包含文件名必須用引號(hào)(“*.h”)或尖括號(hào)(〈*.h〉)括起來(lái),否則
將產(chǎn)生此類錯(cuò)誤。如果使用了一個(gè)宏,則產(chǎn)生的擴(kuò)展程序文本也是不正確的(因?yàn)?br>沒(méi)有加上引號(hào))。
Bad ifdef(ifndef/undef) directive syntax ifdef(ifndef/undef)命令
語(yǔ)法錯(cuò)誤;#ifdef(ifndef/undef)必須以單個(gè)標(biāo)
識(shí)符(僅此一個(gè))作為該命令的體。
Bad file size syntax 位字段長(zhǎng)語(yǔ)法錯(cuò)誤;一個(gè)位字段長(zhǎng)必須是1-16位的
常量表達(dá)式。
Call of non-function 調(diào)用未定義函數(shù);正確調(diào)用的函數(shù)無(wú)定義,通常是
由于不正確的函數(shù)聲明或函數(shù)名拼寫錯(cuò)誤引起的。
Cannot modify a constant object 不能修改一個(gè)常量對(duì)象; 對(duì)定義為常
量的對(duì)象進(jìn)行不合法操作(例如常量的賦值)將引起此錯(cuò)誤。
Case outside of switch case出現(xiàn)在switch外;通常由于大括號(hào)不配對(duì)引
起的。
Case statement missing: Case語(yǔ)句漏掉“:”;
Case syntax error case語(yǔ)法錯(cuò)誤;
Character constant too long 字符常量太長(zhǎng);字符常量只能是一個(gè)或兩
個(gè)字符長(zhǎng)。
Compound statement missing} 復(fù)合語(yǔ)句漏掉};通常由于花括號(hào)不配對(duì)引
起的。
Conflicting type modifiers 類型修飾符沖突;對(duì)同一指針只能指定一種
變址修飾符(如near或far);同樣對(duì)于同一函數(shù), 也只能給出一種語(yǔ)言修飾符(
如cdecl、pascal或interrupt)。
Constant expression required 要求常量表達(dá)式;數(shù)組的大小必須是常量。
本錯(cuò)誤通常由于#define常量的拼寫錯(cuò)誤引起的。
Could not find file‘xxx.xxx’ 找不到‘xxx.xxx’文件; 編譯程序找
不到命令行上給出的文件。
Declaration missing; 聲明漏掉分號(hào);在源文件中包含一個(gè)類型或存儲(chǔ)類
但后面漏掉了分號(hào)。
Declaration needs type or storage class 聲明必須給出類型或存儲(chǔ)類;
如聲明“i,j;”是不正確的。
Declaration syntax error 聲明出現(xiàn)語(yǔ)法錯(cuò)誤;在源文件中,某個(gè)聲明丟
失了某些符號(hào)或有多余的符號(hào)。
Default outside of switch Default在switch外出現(xiàn);通常是由于括號(hào)不
配對(duì)引起的。
Define directive needs an identifier Define 命令必須有一標(biāo)識(shí)符;
#define后面第一個(gè)非空格必須是一標(biāo)識(shí)符。
Division by zero 除數(shù)為零;
Do statement must have while do語(yǔ)句中必須有while;
Do-while statement missing( do-while語(yǔ)句漏掉了“(”;
Do-while statement missing) do-while語(yǔ)句漏掉了“)”;
Do-while statement missing; do-while語(yǔ)句漏掉了分號(hào);
Duplicate case case的情況值不唯一;switch語(yǔ)句的每個(gè)case必須有一個(gè)
唯一的常量表達(dá)式。
Enum syntax error enum語(yǔ)法錯(cuò)誤;賦給enum 類型變量的表達(dá)式不為常量
產(chǎn)生本錯(cuò)誤。
Error Directive:xxx Error命令:xxx;處理源文件中的#error命令時(shí),
顯示該命令定義的信息。
Error writing output file 寫輸出文件錯(cuò);通常是由磁盤空間引起的,
可刪除某些無(wú)用文件,重新編譯。
Expression syntax 表達(dá)式語(yǔ)法錯(cuò);通常是由于兩個(gè)連續(xù)操作符、 括號(hào)不
配對(duì)或缺少括號(hào),以及前一語(yǔ)句漏掉了分號(hào)等引起的。
Extra parameter in call 調(diào)用時(shí)出現(xiàn)多余參數(shù);調(diào)用函數(shù)時(shí),其實(shí)際參
數(shù)個(gè)數(shù)多余函數(shù)定義的參數(shù)個(gè)數(shù)。
Extra parameter in call to xxx 調(diào)用xxx函數(shù)時(shí),出現(xiàn)了多余的參數(shù);
調(diào)用一個(gè)指定函數(shù)時(shí)(該函數(shù)由原型定義)出現(xiàn)了過(guò)多的參數(shù)。
File name too long 文件名太長(zhǎng);#include命令給出的文件名太長(zhǎng),編譯
程序無(wú)法處理。DOS中的文件名不應(yīng)超過(guò)64個(gè)字符。
For statement missing( for語(yǔ)句漏掉“(”。
For statement missing) for語(yǔ)句漏掉“)”。
For statement missing; for語(yǔ)句漏掉“;”。
Function call missing) 函數(shù)調(diào)用缺少“)”。
Function definition out of place 函數(shù)定義位置錯(cuò);函數(shù)定義不可出現(xiàn)
在另一函數(shù)內(nèi),函數(shù)內(nèi)的任何聲明,只要以類似于帶有一個(gè)參數(shù)表的函數(shù)開始,就
被認(rèn)為是一個(gè)函數(shù)定義。
Function doesn‘t take a variable of argument 函數(shù)不接受可變的參數(shù)
個(gè)數(shù);源文件中某個(gè)函數(shù)內(nèi)使用了va_start宏,此函數(shù)不能接受可變數(shù)量的參數(shù)。
Goto statement missing label goto語(yǔ)句缺少標(biāo)號(hào);在goto關(guān)鍵字后面必
須有一個(gè)標(biāo)號(hào)。
If statement missing( if語(yǔ)句缺少“(”。
If statement missing) if語(yǔ)句缺少“)”。
Illegal character ‘c’(0xXX) 非法字符‘c’(0xXX);編譯程序發(fā)現(xiàn)
輸入文件中有一些非法字符,即以十六進(jìn)制形式打印的字符。
Illegal initialization 非法初始化;初始化必須是常量表達(dá)式,或是一
個(gè)全局變量extern,或是static的地址加減一常量。
Illegal octal digit 非法八進(jìn)制數(shù)。
Illegal pointer subtraction 非法指針相減; 這是由于試圖以一個(gè)非指
針變量減去一個(gè)指針變量而造成的。
Illegal structure operation 非法結(jié)構(gòu)操作;結(jié)構(gòu)只能使用(.)、取地
址(&)和賦值(=)操作符,或作為函數(shù)的參數(shù)傳遞。當(dāng)編譯程序發(fā)現(xiàn)結(jié)構(gòu)使用了
其它操作符時(shí),出現(xiàn)此錯(cuò)誤。
Illegal use of floating point 非法浮點(diǎn)運(yùn)算; 浮點(diǎn)運(yùn)算分量不允許出
現(xiàn)在位移運(yùn)算符、按位邏輯運(yùn)算符、條件(? :)、間接(*)以及其它一些運(yùn)算符
中。編譯程序發(fā)現(xiàn)上述運(yùn)算符中使用了浮點(diǎn)運(yùn)算分量時(shí),出現(xiàn)此錯(cuò)誤。
Illegal use of point 指針使用不合法;施于指針的運(yùn)算符只能是加、減、
賦值、比較、間接(*)或箭頭。如用其他運(yùn)算符,則出現(xiàn)此錯(cuò)誤。
Improper use of a typedef symbol typedef符號(hào)使用不當(dāng); 源文件中使
用了一個(gè)typedef符號(hào),符號(hào)變量應(yīng)出現(xiàn)在一個(gè)表達(dá)式中。 檢查一下此符號(hào)的說(shuō)和
可能的拼寫錯(cuò)誤。
In-line assembly not allowed 不允許直接插入的匯編語(yǔ)句;源文件中含
有直接插入的匯編語(yǔ)句,若在集成環(huán)境下進(jìn)行編譯,則出現(xiàn)此錯(cuò)誤。 必須使用TCC
命令行編譯此文件。
Incompatible storage class 不相容的存儲(chǔ)類;源文件的一個(gè)函數(shù)定義中
使用了extern關(guān)鍵字,但只有static(或根本沒(méi)有存儲(chǔ)類型)
是允許的。
Incompatible type conversion 不相容的類型轉(zhuǎn)換;例如:函數(shù)與非函數(shù)
間轉(zhuǎn)換,一種結(jié)構(gòu)體或數(shù)組與一種標(biāo)準(zhǔn)類型的轉(zhuǎn)換,浮點(diǎn)數(shù)與指針間轉(zhuǎn)換等。
Incorrect command line argument:xxx 不正確的命令行參數(shù):xxx;編譯
程序視此命令行參數(shù)是非法的。
Incorrect configuration file argument:xxx 不正確的配置文件參數(shù):
xxx;檢查一下前面的短橫線(-)。
Incorrect number format 不正確的數(shù)據(jù)格式; 編譯程序發(fā)現(xiàn)在十六進(jìn)制
中出現(xiàn)十進(jìn)制小數(shù)點(diǎn)。
Incorrect use of default 使用default時(shí)錯(cuò)誤;編譯程序發(fā)現(xiàn)default關(guān)
鍵字后缺少分號(hào)。
Initialize syntax error 初始化語(yǔ)句產(chǎn)生錯(cuò)誤; 初始化過(guò)程缺少或多出
了運(yùn)算符,或出現(xiàn)括號(hào)不匹配及其它不正常情況。
Invalid indirection 間接運(yùn)算符錯(cuò)誤; 間接運(yùn)算符(*)要求非空指針
作為運(yùn)算分量。
Invalid macro argument separator 無(wú)效的宏參數(shù)分隔符;在宏定義中,
參數(shù)必須用逗號(hào)分隔。編譯程序發(fā)現(xiàn)參數(shù)名后面有其他非法字符時(shí),出現(xiàn)此錯(cuò)誤。
Invalid pointer addition 無(wú)效的指針相加;源程序中試圖把兩個(gè)指針相
加。
Invalid use of arrow 箭頭使用錯(cuò);箭頭運(yùn)算符后必須跟一個(gè)標(biāo)識(shí)符。
Invalid use of dot 點(diǎn)使用錯(cuò);在點(diǎn)運(yùn)算符后必須跟一標(biāo)識(shí)符。
Lvalue repuired 賦值請(qǐng)求;賦值運(yùn)算符的左邊必須是一個(gè)地址表達(dá)式,包
括數(shù)值變量、指針變量、結(jié)構(gòu)引用域、間接指針和數(shù)組分量。
Macro argument syntax error 宏參數(shù)語(yǔ)法錯(cuò)誤; 宏定義中的參數(shù)必須是
一個(gè)標(biāo)識(shí)符。若編譯程序發(fā)現(xiàn)所需要的參數(shù)不是標(biāo)識(shí)符的字符,出現(xiàn)此錯(cuò)誤。
Macro expansion too long 宏擴(kuò)展太長(zhǎng);一個(gè)宏擴(kuò)展不能多于4096個(gè)字符
當(dāng)宏遞歸擴(kuò)展自身時(shí),常出現(xiàn)此錯(cuò)誤。宏不能對(duì)自身進(jìn)行擴(kuò)展。
May complied only one file when an file name is given 給出一個(gè)輸
出文件名時(shí),可能只編譯一個(gè)文件;在命令行編譯中使用-o選擇,只允許一個(gè)輸出
文件名。此時(shí),只編譯第一個(gè)文件,其他文件被忽略。
Mismatch number of parameters in definition 函數(shù)多余中參數(shù)個(gè)數(shù)不
匹配;函數(shù)定義中的參數(shù)和函數(shù)原型中提供的信息不匹配。
Misplaced break break位置錯(cuò)誤;編譯程序發(fā)現(xiàn)break語(yǔ)句在switch語(yǔ)句
或循環(huán)結(jié)構(gòu)之外。
Misplaced continue continue語(yǔ)句位置錯(cuò)誤;編譯程序發(fā)現(xiàn)continue語(yǔ)句
在循環(huán)結(jié)構(gòu)之外。
Misplaced decimal point 十進(jìn)制小數(shù)點(diǎn)位置錯(cuò); 編譯程序發(fā)現(xiàn)浮點(diǎn)常數(shù)
的指數(shù)部分有一個(gè)十進(jìn)制小數(shù)點(diǎn)。
Misplaced else else位置錯(cuò); 編譯程序發(fā)現(xiàn)else 語(yǔ)句缺少與之相匹配的
if語(yǔ)句此錯(cuò)誤的產(chǎn)生,除了由于else多余外,還有可能由于多余的分號(hào)或漏寫了大
括號(hào)及前面的if語(yǔ)句出現(xiàn)語(yǔ)法錯(cuò)誤引起的。
Misplace elif directive elif命令位置錯(cuò);編譯程序找不到與#elif相匹
配的#if、#ifdef或#ifndef命令。
Misplace else directive else命令位置錯(cuò);編譯程序找不到與#else命令
相匹配的#if、#ifdef或#ifndef命令。
Misplace endif directive endif命令位置錯(cuò);編譯程序找不到與endif相
匹配的#if、#ifdef或#ifndef命令。
Must be addressable 必須是可編址的; 取址操作(& )作用于一個(gè)不可
編址的對(duì)象,如寄存器變量。
Must take address of memory location 地址運(yùn)算符(&)不可編址的表
達(dá)式源文件中對(duì)不可編址的表達(dá)式使用了地址操作符,如對(duì)寄存器變量。
No file name ending 無(wú)文件名終止符;在#include語(yǔ)句中, 文件名缺少
正確的畢引號(hào)(")或右尖括號(hào)(>)。
No file name giver 未給出文件名;Turbo C編譯命令(tcc)中沒(méi)有包含
文件名。必須指定一個(gè)源文件名。
Non-portable pointer assignment 不可移植指針賦值; 源程序中將一個(gè)
指針賦給一個(gè)非指針或相反。但作為特例,允許把常量零值賦給一個(gè)指針,如果合
適,應(yīng)該強(qiáng)行抑制此錯(cuò)誤信息。
Non-portable pointer comparison 不可移植指針比較; 源程序中將一個(gè)
指針和一個(gè)非指針(常量零除外)進(jìn)行比較,如果合適,應(yīng)強(qiáng)行抑制此錯(cuò)誤信息。
Non-portable pointer conversion 不可移植返回類型轉(zhuǎn)換; 在返回語(yǔ)句
中的表達(dá)式類型與函數(shù)說(shuō)明中的類型不同,但如果函數(shù)的返回表達(dá)式是指針,則可
以進(jìn)行轉(zhuǎn)換。此時(shí),返回指針的函數(shù)可能送回一個(gè)常量零,而零被轉(zhuǎn)換成一個(gè)適當(dāng)
的指針值。
Not an allowed type 不允許的類型;在源文件中聲明了幾種禁止的類型,
如聲明函數(shù)返回一個(gè)函數(shù)或數(shù)組。
Out of memory 內(nèi)存不夠;所有工作內(nèi)存耗盡, 應(yīng)把文件放到一臺(tái)有較大
內(nèi)存的機(jī)器去執(zhí)行或簡(jiǎn)化源程序。
Pointer required on left side of -> ->操作符左邊須是一個(gè)指針;在
->的左邊未出現(xiàn)指針。
Redeclaration of“xxx” “xxx”重定義;此標(biāo)識(shí)已經(jīng)定義過(guò)。
Size of structure or array not known 結(jié)構(gòu)體或數(shù)組大小不確定;有些
表達(dá)式(如size of或存儲(chǔ)說(shuō)明) 中出現(xiàn)一個(gè)未定義的結(jié)構(gòu)體或一個(gè)空長(zhǎng)度數(shù)組。
若結(jié)構(gòu)長(zhǎng)度不需要,則在定義之前就可引用;如果數(shù)組不申請(qǐng)存儲(chǔ)空間或者初始化
時(shí)給定了長(zhǎng)度,那么就可以定義為空長(zhǎng)。
Statement missing; 語(yǔ)句缺少分號(hào);編譯程序發(fā)現(xiàn)一表達(dá)式語(yǔ)句后面沒(méi)有
分號(hào)。
Structure of union syntax error 結(jié)構(gòu)體或共用(聯(lián)合)語(yǔ)法錯(cuò)誤; 編
譯程序發(fā)現(xiàn)在struct或union關(guān)鍵字后面沒(méi)有標(biāo)識(shí)符或左花括號(hào)({)。
Structure size too large 結(jié)構(gòu)體太大;源文件中說(shuō)明了一個(gè)結(jié)構(gòu)體,它
所需的內(nèi)存區(qū)域太大以致內(nèi)存不夠。
Subscripting missing] 下標(biāo)缺少“]”;編譯程序發(fā)現(xiàn)一個(gè)下標(biāo)表達(dá)式缺
少閉方括號(hào)。可能是由于漏掉、多寫操作符或括號(hào)不匹配引起的。
Switch statement missing( 語(yǔ)句缺少“(”; 在switch 語(yǔ)句中, 關(guān)鍵字
switch后面缺少左括號(hào)。
Switch statement missing) 語(yǔ)句缺少“)”;在switch語(yǔ)句中, 測(cè)試表達(dá)
式后面缺少右括號(hào)。
Too few parameters in call 函數(shù)調(diào)用參數(shù)太少;對(duì)帶有原形的函數(shù)調(diào)用
(通過(guò)一個(gè)函數(shù)指針)參數(shù)太少。原形要求給出所有參數(shù)。
Too few parameter in call to‘xxx’ 調(diào)用‘xxx’時(shí)參數(shù)太少;調(diào)用指
定的函數(shù)(該函數(shù)用一原形聲明)時(shí),給出的參數(shù)太少。
Too many cases case太多;switch語(yǔ)句最多只能有257個(gè)case。
Too many decimal points 十進(jìn)制小數(shù)點(diǎn)太多; 編譯程序發(fā)現(xiàn)一個(gè)浮點(diǎn)常
量中帶有不止一個(gè)十進(jìn)制小數(shù)點(diǎn)。
Too many default cases default情況太多;編譯程序發(fā)現(xiàn)一個(gè)switch 語(yǔ)
句中有不止一個(gè)default語(yǔ)句。
Too many exponents 階碼太多;編譯程序發(fā)現(xiàn)一個(gè)浮點(diǎn)常量中有不止一個(gè)
階碼。
Too many initializers 初始化太多; 編譯程序發(fā)現(xiàn)初始化比聲明所允許
的要多。
Too many storage classes in declaration 聲明中存儲(chǔ)類太多; 一個(gè)聲
明只允許有一種存儲(chǔ)類。
Too many types in declaration 聲明中類型太多; 一個(gè)聲明只允許有一
種下列基本類型:char、float、int、double、struct、union、enum或typedef。
Too much auto memory in function 函數(shù)中自動(dòng)存儲(chǔ)太多;當(dāng)函數(shù)聲明的
自動(dòng)存儲(chǔ)超過(guò)了可用的內(nèi)存空間。
Too much code define in file 文件定義的代碼太多;當(dāng)前文件中函數(shù)的
總長(zhǎng)度超過(guò)64K字節(jié)。可以移去不必要的代碼或把源文件分開來(lái)寫。
Too much global data define in file 文件中定義的全局?jǐn)?shù)據(jù)太多; 全
局?jǐn)?shù)據(jù)聲明的總數(shù)超過(guò)64K字節(jié)。檢查一些數(shù)組的定義是否太長(zhǎng)。 如果所有的聲明
都是必要的,考慮重新組織程序。
Two consecutive dots 兩連續(xù)點(diǎn);因?yàn)槭÷蕴?hào)包含三個(gè)點(diǎn),而十進(jìn)制小數(shù)
點(diǎn)和選擇運(yùn)算符使用一個(gè)點(diǎn),所以在C程序中出現(xiàn)兩個(gè)連續(xù)點(diǎn)是不允許的。
Type mismatch in parameter # 參數(shù)#類型不匹配;通過(guò)一個(gè)指針訪問(wèn)已
由原形說(shuō)明的參數(shù)時(shí),給定參數(shù)# N(從左到右N逐個(gè)加1)不能轉(zhuǎn)換為已聲明的
參數(shù)類型。
Type mismatch in parameter # incall to‘xxx’ 調(diào)用‘xxx ’時(shí)參數(shù)類
型不匹配;源文件中通過(guò)一個(gè)原形說(shuō)明了指定的函數(shù),而給定的參數(shù)(從左到右N
逐個(gè)加1)不能轉(zhuǎn)換為已說(shuō)明的參數(shù)類型。
Type mismatch in parameter‘xxx’ 參數(shù)‘xxx’類型不匹配;源文件中
通過(guò)一個(gè)原形聲明了可由函數(shù)指針調(diào)用的函數(shù),而所指定的參數(shù)不能轉(zhuǎn)換為已聲明
的參數(shù)類型。
Type mismatch in parameter‘xxx’in call to‘yyy’ 調(diào)用‘yyy’時(shí)參
數(shù)‘xxx’不匹配;源文件中通過(guò)一個(gè)原型聲明了指定的參數(shù),而指定的參數(shù)不能轉(zhuǎn)
換為另一個(gè)已聲明的參數(shù)類型。
Type mismatch in redeclaration of‘xxx’ 重定義類型不匹配;源文件
中把一個(gè)已經(jīng)聲明的變量重新聲明為另一類型。如果一個(gè)函數(shù)被調(diào)用,而后又被聲
明成非整形也會(huì)產(chǎn)生此錯(cuò)誤。發(fā)生這種情況時(shí),必須在第一次調(diào)用函數(shù)前給函數(shù)加
上extern聲明.
Unable to create output file‘xxx.xxx’ 不能創(chuàng)建輸出文件‘xxx. xx
x’;當(dāng)工作軟盤已滿或有寫保護(hù)時(shí)產(chǎn)生此錯(cuò)誤。如果軟盤已滿,則刪除一些不必要
的文件后重新編譯;如果軟盤有寫保護(hù),則把源文件移到一個(gè)可寫的軟盤上并重新
編譯。
Unable to create turboc.lnk 不能創(chuàng)建turboc.lnk文件; 編譯程序不能
創(chuàng)建臨時(shí)文件TURBOC.LIN因?yàn)樗荒艽嫒〈疟P或者磁盤已滿。
Unable to execute command‘xxx ’ 不能執(zhí)行‘xxx ’命令; 找不到
TLINK或MASM,或者磁盤出錯(cuò)。
Unable to open include file‘xxx.xxx’ 不能打開包含文件‘xxx.xxx’
編譯程序找不到該包含文件。可能是由于一個(gè)#clude文件包含其本身引起的,也可
能是根目錄下的CONFIG.SYS中沒(méi)設(shè)置能同時(shí)打開的文件個(gè)數(shù)(試加一句files=20)。
Unable to open input file‘xxx.xxx’ 不能打開輸入文件‘xxx.xxx’;
當(dāng)編譯程序找不到源文件時(shí)出現(xiàn)此錯(cuò)誤。檢查文件名是否拼錯(cuò)或檢查對(duì)應(yīng)的軟盤或
目錄中是否有此文件。
Undefined label‘xxx’ 標(biāo)號(hào)‘xxx’未定義;函數(shù)中g(shù)oto語(yǔ)句后的標(biāo)號(hào)沒(méi)
有定義。
Undefined structure‘xxx’ 結(jié)構(gòu)體‘xxx’未定義;源文件中使用了未經(jīng)
說(shuō)明的某個(gè)結(jié)構(gòu)體。可能是由于結(jié)構(gòu)體名拼寫錯(cuò)誤或缺少結(jié)構(gòu)體說(shuō)明而引起的。
Undefined symbol‘xxx’ 符號(hào)‘xxx’未定義;標(biāo)識(shí)符無(wú)定義, 可能是由
于說(shuō)明或引用處有拼寫錯(cuò)誤,也可能是引用標(biāo)識(shí)符說(shuō)明錯(cuò)誤引起。
Unexpected end of file in comment started on line 源文件在某個(gè)注
釋中意外結(jié)束;通常是由于注釋結(jié)束標(biāo)志(*/)漏掉而引起的。
Unexpected end of file in conditional stated on line # 源文件在#
行開始的條件語(yǔ)句中意外結(jié)束;在編譯程序遇到#endif前程序結(jié)束, 通常是由于
#endef漏掉或拼寫錯(cuò)誤引起的。
Unknown preprocessor directive‘xxx’ 不認(rèn)識(shí)的預(yù)處理命令‘xxx’;
編譯程序在某行開始遇到“#”字符,但其后的命令名不是下列之一:define 、
undef、line、if、ifdef、ifndef、include、else或dndif。
Unterminated character constant 未終結(jié)的字符常量;編譯程序發(fā)現(xiàn)一個(gè)
不匹配的省略符。
Unterminated string 未終結(jié)的串;編譯程序發(fā)現(xiàn)一個(gè)不匹配的引號(hào)。
UNterminated string or character constant 未終結(jié)的串或字符常量;編
譯程序發(fā)現(xiàn)串或字符常量開始后沒(méi)有終結(jié)。
User break 用戶中斷;在集成環(huán)境里編譯和連接時(shí)用戶按了Ctrl+Break。
While statement missing( While的表達(dá)式語(yǔ)句漏掉“(”;
While statement missing) While的表達(dá)式語(yǔ)句漏掉“)”;
Wrong number of arguments in of‘xxx’ 調(diào)用‘xxx’時(shí)參數(shù)個(gè)數(shù)錯(cuò)誤;
源文件中調(diào)用某個(gè)宏時(shí),參數(shù)個(gè)數(shù)不對(duì)。
3:警告:
‘xxx’declared but never used 聲明了‘xxx’但未使用; 在源文件中
說(shuō)明了此變量,但沒(méi)有使用。當(dāng)編譯程序遇到復(fù)合語(yǔ)句或函數(shù)的結(jié)束處括號(hào)時(shí),發(fā)
出此警告。
‘xxx’is assigned a value which is never used ‘xxx ’被賦以一個(gè)
不使用的值;此變量出現(xiàn)在一個(gè)賦值語(yǔ)句里,但直到函數(shù)結(jié)束都未使用過(guò)。當(dāng)編譯
程序遇到結(jié)束的閉花括號(hào)時(shí)發(fā)出此警告。
‘xxx’not part of structure ‘xxx’不是結(jié)構(gòu)體的一部分;出現(xiàn)在點(diǎn)或
箭頭的左邊的域名不是結(jié)構(gòu)體的一部分,或者點(diǎn)的左邊不是結(jié)構(gòu)體,箭頭左邊不指
向結(jié)構(gòu)。
Ambiguous operators need parentheses 歧義運(yùn)算符需要括號(hào);當(dāng)兩個(gè)位
移、關(guān)系或按位操作符在一起使用而不加括號(hào)時(shí),發(fā)出此警告;當(dāng)一加法或一減法
操作符不加括號(hào)與一位移操作符出現(xiàn)在一起時(shí),也發(fā)出此警告。程序員常常混淆這
些操作符的優(yōu)先級(jí),因?yàn)樗鼈兊膬?yōu)先級(jí)不太直觀。
Both return and return of a value used 即使用返回又使用返回值;編
譯程序發(fā)現(xiàn)一個(gè)與前面定義的return不一致的return語(yǔ)句,發(fā)出此警告。當(dāng)某函數(shù)
只在一些return語(yǔ)句中返回時(shí)一般會(huì)產(chǎn)生錯(cuò)誤。
Call to function with prototype 調(diào)用無(wú)原型的函數(shù);如果“原型請(qǐng)求”
警告可用,且又調(diào)用了一個(gè)無(wú)原型的函數(shù),就發(fā)出此警告。
Call to function‘xxx’with prototype 調(diào)用無(wú)原型的函數(shù)‘xxx’;如
果“原型請(qǐng)求”警告可用,且又調(diào)用了一個(gè)原先沒(méi)有原型的函數(shù),‘xxx’就發(fā)出此
警告。
Code has no effect 代碼無(wú)效;當(dāng)編譯程序發(fā)現(xiàn)一個(gè)含有無(wú)效操作符的語(yǔ)
句時(shí),發(fā)出此警告。例如語(yǔ)句“a+b;”對(duì)每一個(gè)變量都不起作用,無(wú)需操作,且可
能引起一個(gè)錯(cuò)誤。
Constant is long 常量是long類型;若編譯程序遇到一個(gè)十進(jìn)制常量大于
32767,或一個(gè)八進(jìn)制常量大于65535,而其后無(wú)字母“l”或“L”,把此常量當(dāng)做
long類型處理。
Constant out of range in comparison 比較時(shí)常量超出了范圍; 在源文
件中有一比較語(yǔ)句,其中一個(gè)常量子表達(dá)式超出了另一個(gè)子表達(dá)式類型所允許的范
圍。如一個(gè)無(wú)符號(hào)量與-1比較就無(wú)意義。為得到一個(gè)大于32767 (十進(jìn)制)的無(wú)符
號(hào)常量,可以在常量前加上unsigned或在常量后加字母“u”或“U”。
Conversion may lose significant digits 轉(zhuǎn)換可能丟掉高位數(shù)字;在賦
值操作或其它情況下,源程序要求把long或unsigned long型轉(zhuǎn)變成int或unsigned
int型。在有些機(jī)器上,因?yàn)閕nt型和long型變量具有相同長(zhǎng)度, 這種轉(zhuǎn)換可能改
變程序的輸出特性。無(wú)論此警告何時(shí)發(fā)生編譯程序仍將產(chǎn)生代碼來(lái)做比較。如果代
碼比較后總是給出同樣結(jié)果,比如一個(gè)字符表達(dá)式與4000比較,則代碼總要進(jìn)行測(cè)
試。這還表示一個(gè)無(wú)符號(hào)表達(dá)式可以與-1進(jìn)行比較,因?yàn)?087機(jī)器上,一個(gè)無(wú)符號(hào)
表達(dá)式與-1有相同的位模式。
Function should return a value 函數(shù)應(yīng)該返回一個(gè)值;源文件聲明的當(dāng)
前函數(shù)的返回類型既非int型也非void型,但編譯程序未發(fā)現(xiàn)返回值。返回int的函
數(shù)可以不說(shuō)明,因?yàn)樵诶习姹镜腃語(yǔ)言中,沒(méi)有void類型來(lái)指出函數(shù)不返回值。
Mixing pointers to signed and unsigned char 混淆signed和unsigned
char指針;沒(méi)有通過(guò)顯示的強(qiáng)制類型轉(zhuǎn)換,就把一個(gè)字符指針轉(zhuǎn)換為無(wú)符號(hào)指針,
或把一個(gè)無(wú)符號(hào)指針轉(zhuǎn)變?yōu)樽址羔槨?br> No decaration for function‘xxx’ 函數(shù)‘xxx’沒(méi)有聲明;當(dāng)“聲明請(qǐng)
求”警告可用,而又調(diào)用了一個(gè)沒(méi)有預(yù)先聲明的函數(shù)時(shí),發(fā)出此警告。函數(shù)聲明可
以是傳統(tǒng)的,也可以是現(xiàn)代(原型)的風(fēng)格。
Non-portable pointer assignment 不可移植指針賦值; 源文件中把一個(gè)
指針賦給另一個(gè)非指針或相反。作為特例,可以把常量0賦給一指針。如果合適,
可以強(qiáng)制抑制此警告。
Non-portable pointer comparison 不可移植比較; 源文件中把一個(gè)指針
和另一非指針(非常量零)進(jìn)行比較。如果合適,可以強(qiáng)行抑制本警告。
Non-portable return type conversion 不可移植返回類型轉(zhuǎn)換; return
語(yǔ)句中的表達(dá)式類型和函數(shù)聲明的類型不一致。作為特例,如果函數(shù)或返回表達(dá)式
是一個(gè)指針,這是可以的。在此情況下返回指針的函數(shù)可能返回一個(gè)常量零,而零
被轉(zhuǎn)換成一個(gè)適當(dāng)?shù)闹羔樦怠?br> Parameter‘xxx’is never used 參數(shù)‘xxx’從未使用;函數(shù)說(shuō)明中的某
函數(shù)在函數(shù)體里從未使用。這可以但不一定是一個(gè)錯(cuò)誤,通常是由于參數(shù)名拼寫錯(cuò)
誤引起的。如果在函數(shù)體內(nèi),該標(biāo)識(shí)符被重新定義為一個(gè)自動(dòng)(局部)變量,也將
產(chǎn)生本警告。此參數(shù)被標(biāo)識(shí)為一個(gè)自動(dòng)變量但未使用。
Possible use of‘xxx’before definition 在定義‘xxx’之前
可能已使用此條件。如果改變量出現(xiàn)的物理位置在對(duì)它賦值之前,就會(huì)產(chǎn)生本警告
,當(dāng)然程序的實(shí)際流程可能在使用前已賦值。
Possible incorrect assignment 可能的不正確賦值;當(dāng)編譯程序遇到賦
值操作符作為條件表達(dá)式(如if,while或do-while語(yǔ)句的一部分)的主操作符時(shí),
發(fā)生本警告,通常是由于把賦值號(hào)當(dāng)做等號(hào)使用了。若希望禁止此警告,則可把賦
值語(yǔ)句用括號(hào)括起來(lái),并把它與零作顯式比較。如:if(a=b)應(yīng)寫作if(a=b)!=0。
Redefinition of‘xxx’is not identical ‘xxx’的重定義不相同;源文
件對(duì)命名宏重定義時(shí),使用的正文內(nèi)容與第一次定義時(shí)不同,新內(nèi)容將代替舊內(nèi)容。
Restarting compiler using assembly 用匯編重新啟動(dòng)編譯;編譯程序遇
到一個(gè)未使用命令行選擇項(xiàng)-B或#pragma inline語(yǔ)句的asm,通過(guò)時(shí)用匯編重新啟
動(dòng)編譯。
Structure passed by value 結(jié)構(gòu)按值傳達(dá);如果“結(jié)構(gòu)按值傳達(dá)”警告可
用,則在結(jié)構(gòu)作為參數(shù)按值傳達(dá)時(shí)產(chǎn)生本警告。通常是在編制程序時(shí),把結(jié)構(gòu)體作
為參數(shù)傳遞,而又漏掉了地址操作符(&)。 因?yàn)榻Y(jié)構(gòu)體可以按值傳達(dá),所以這種
遺漏是可以接收的。本警告只起到一個(gè)提示作用。
Superfluous & with function or array 在函數(shù)或數(shù)組中有多余的“&”
號(hào);取址操作符(&)對(duì)一個(gè)數(shù)組或函數(shù)名是不必要的,應(yīng)該去掉。
Suspicious pointer conversion 可疑的指針轉(zhuǎn)換; 編譯程序遇到一些指
針轉(zhuǎn)換,這些轉(zhuǎn)換引起指針指向不同的類型。如果合適,應(yīng)強(qiáng)行抑制此警告。
Undefined structure‘xxx’ 結(jié)構(gòu)體‘xxx’未定義; 在源文件中使用了
該結(jié)構(gòu),但未定義。可能是由于結(jié)構(gòu)體名拼寫錯(cuò)誤或忘記定義而引起的。
Unknown assembler instruction 不認(rèn)識(shí)的匯編命令; 編譯程序發(fā)現(xiàn)在插
入的匯編語(yǔ)句中有一個(gè)不允許的操作碼。檢查此操作的拼寫,并查看一下操作碼表
看該命令能否被接受。
Unreachable code 不可達(dá)代碼; break、continue、goto或return語(yǔ)句后
沒(méi)有跟標(biāo)號(hào)或循環(huán)函數(shù)的結(jié)束符。編譯程序使用一個(gè)常量測(cè)試條件來(lái)檢查while、do
和for循環(huán),并試圖知道循環(huán)沒(méi)有失敗。
Void function may not return a value void函數(shù)不可以返回值;源文件
中的當(dāng)前函數(shù)說(shuō)明為void,但編譯程序發(fā)現(xiàn)一個(gè)帶值的返回語(yǔ)句,該返回語(yǔ)句的值
將被忽略。
Zero length structure 結(jié)構(gòu)長(zhǎng)度為零; 在源文件中定義了一個(gè)總長(zhǎng)度為
零的結(jié)構(gòu),對(duì)此結(jié)構(gòu)的任何使用都是錯(cuò)誤的。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。