編譯錯(cuò)誤信息
Turbo C編譯程序檢查源程序中三類出錯(cuò)信息:致命錯(cuò)誤、一般錯(cuò)誤和警告。
致命錯(cuò)誤出現(xiàn)很少,它通常是內(nèi)部編譯出錯(cuò)。在發(fā)生錯(cuò)誤時(shí),立即停止,必須采取一些適當(dāng)?shù)拇胧┎⒅匦戮幾g。
一般錯(cuò)誤指程序的語(yǔ)法錯(cuò)誤、磁盤(pán)或內(nèi)存存取錯(cuò)誤或命令錯(cuò)誤等。編譯程序?qū)⒏鶕?jù)事先廟宇的出錯(cuò)個(gè)數(shù)來(lái)決定是否停止編譯。編譯程序在每個(gè)階段(預(yù)處理、語(yǔ)法分析、優(yōu)化、代碼生成)盡可能多地發(fā)現(xiàn)源程序中的錯(cuò)誤。
警告并不阻止編譯進(jìn)行。它指出一些值得懷疑的情況,而這些情況本身又有可能合理地成為源程序的一部分。如果在源文件中使用了與機(jī)器有關(guān)的結(jié)構(gòu),編譯也將產(chǎn)生警告信息。
編譯程序首先輸出這三類錯(cuò)誤信息,然后輸出源文件名和發(fā)現(xiàn)出錯(cuò)的行號(hào),最后輸出信息的內(nèi)容。
下面按字母順序分別列出這三類錯(cuò)誤信息。對(duì)每一條信息,提供可能產(chǎn)生的原因和修正方法。
請(qǐng)注意錯(cuò)誤信息處有關(guān)行事情的一個(gè)細(xì)節(jié):編譯程序只產(chǎn)生被檢測(cè)到的信息。因?yàn)镃并不限定在正文的某行放一條語(yǔ)句,這樣,真正產(chǎn)生錯(cuò)誤的行可能在編譯指出的前一行或幾行。在下面的信息列表中,我們指出了這種可能。
致命錯(cuò)誤
1. Bad call of in-line function 內(nèi)部函數(shù)非法調(diào)用
在使用一個(gè)宏定義的內(nèi)部函數(shù)時(shí),沒(méi)有正確調(diào)用。一個(gè)內(nèi)部函數(shù)以雙下劃線(--)開(kāi)始和結(jié)束。
2. Irreducible expression tree 不可約表達(dá)式樹(shù)
這種錯(cuò)誤是由于源文件中的某些表達(dá)式使得代碼生成程序無(wú)法為它產(chǎn)生代碼。這種表達(dá)式必須避免使用。
3. Register allocation failure 存儲(chǔ)器分配失效
這種錯(cuò)誤指的是源文件行中的表達(dá)式太復(fù)雜,代碼生成程序無(wú)法為它代碼。此時(shí)應(yīng)簡(jiǎn)化這種繁雜的表達(dá)式或干脆避免使用它。
一般錯(cuò)誤
1. #operator not followed by macro argument name
#運(yùn)算符后無(wú)宏變量名。在宏定義中,#用于標(biāo)識(shí)一宏變量名。"#"后必須跟一宏變量名。
2. 'xxxxxxxxx' not an argument
'xxxxxxx'不是函數(shù)參數(shù)。在源程序中將該標(biāo)識(shí)符定義為一個(gè)函數(shù)參數(shù),但此標(biāo)識(shí)符沒(méi)有在函數(shù)表中出現(xiàn)。
3. Ambiguous symbol 'xxxxxxxxx'
二義性符號(hào)'xxxxxxxxx'。兩個(gè)或多個(gè)結(jié)構(gòu)的某一域名相同,但具有的偏移、類型不同。在變量或表達(dá)式中引用該域而未帶結(jié)構(gòu)名時(shí),將產(chǎn)生二義性,此時(shí)需修改某個(gè)域名或在引用時(shí)另上結(jié)構(gòu)名。
4. Argument #missing name
參數(shù)#名丟失。參數(shù)名已脫離用于定義函數(shù)的原型。如果函數(shù)以原型定義,該函數(shù)必須包含所有的參數(shù)名。
5. Argument list syntax error
參數(shù)表出現(xiàn)語(yǔ)法錯(cuò)誤。函數(shù)調(diào)用的參數(shù)間必須以逗號(hào)隔開(kāi),并以一右括號(hào)結(jié)束。若源文件中含有一個(gè)其后不是逗號(hào)也不是右括號(hào)的參數(shù),則出錯(cuò)。
6. Array bounds missing
數(shù)組的界限符"]"丟失。在源文件中定義了一個(gè)數(shù)組,但此數(shù)組沒(méi)有以一右方括號(hào)結(jié)束。
7. Array size too large
數(shù)組長(zhǎng)度太大。定義的數(shù)組太大,可用內(nèi)存不夠。
8. Assembler statement too long
匯編語(yǔ)句太長(zhǎng)。內(nèi)部匯編語(yǔ)句語(yǔ)句最長(zhǎng)不能超過(guò)去480字節(jié)。
9. Bad configuration file
配置文件不正確。RURBOC。CFG配置文件中包含不是合適命令行選擇項(xiàng)的非注解文字。配置文件命令選擇項(xiàng)必須以一短橫線(-)開(kāi)始。
10. Bad file name format in include directive
使用include指令時(shí),文件名格式不正確。Include文件名必須用引號(hào)("filename.h")或尖括號(hào)()括起來(lái),否則將產(chǎn)生此類錯(cuò)誤。如果使用了宏,則產(chǎn)生的擴(kuò)展正文也不正確(因?yàn)闊o(wú)引號(hào))。
相關(guān)推薦:2010年9月計(jì)算機(jī)等級(jí)考試精華備考資料匯總北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |