歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C語言常見編譯錯誤提示

C語言常見編譯錯誤提示

日期:2017/3/1 10:05:22   编辑:Linux編程

(一)、致命錯誤英漢對照及處理方法:

A-B致命錯誤

Bad call of in-line function (內部函數非法調用)

分析與處理:在使用一個宏定義的內部函數時,沒能正確調用。一個內部函數以兩個下劃線(__)開始和結

束。

Irreducable expression tree (不可約表達式樹)

分析與處理:這種錯誤指的是文件行中的表達式太復雜,使得代碼生成程序無法為它生成代碼。這種表達

式必須避免使用。

Register allocation failure (存儲器分配失敗)

分析與處理:這種錯誤指的是文件行中的表達式太復雜,代碼生成程序無法為它生成代碼。此時應簡化這

種繁雜的表達式或干脆避免使用它。

(二)、一般錯誤信息英漢照及處理方法

#operator not followed by maco argument name(#運算符後沒跟宏變元名)

分析與處理:在宏定義中,#用於標識一宏變串。“#”號後必須跟一個宏變元名。

'xxxxxx' not anargument ('xxxxxx'不是函數參數)

分析與處理:在源程序中將該標識符定義為一個函數參數,但此標識符沒有在函數中出現。

Ambiguous symbol 'xxxxxx' (二義性符號'xxxxxx')

分析與處理:兩個或多個結構的某一域名相同,但具有的偏移、類型不同。在變量或表達式中引用該域而

未帶結構名時,會產生二義性,此時需修改某個域名或在引用時加上結構名。

Argument # missing name (參數#名丟失)

分析與處理:參數名已脫離用於定義函數的函數原型。如果函數以原型定義,該函數必須包含所有的參數

名。

Argument list syntax error (參數表出現語法錯誤)

分析與處理:函數調用的參數間必須以逗號隔開,並以一個右括號結束。若源文件中含有一個其後不是逗

號也不是右括號的參數,則出錯。

Array bounds missing (數組的界限符"]"丟失)

分析與處理:在源文件中定義了一個數組,但此數組沒有以下右方括號結束。

Array size too large (數組太大)

分析與處理:定義的數組太大,超過了可用內存空間。

Assembler statement too long (匯編語句太長)

分析與處理:內部匯編語句最長不能超過480字節。

Bad configuration file (配置文件不正確)

分析與處理:TURBOC.CFG配置文件中包含的不是合適命令行選擇項的非注解文字。配置文件命令選擇項必

須以一個短橫線開始。

Bad file name format in include directive(包含指令中文件名格式不正確)

分析與處理:包含文件名必須用引號("filename.h")或尖括號(<filename>)括起來,否則將產生本類錯誤

。如果使用了宏,則產生的擴展文本也不正確,因為無引號沒辦法識別。

Bad ifdef directive syntax (ifdef指令語法錯誤)

分析與處理:#ifdef必須以單個標識符(只此一個)作為該指令的體。

Bad ifndef directive syntax (ifndef指令語法錯誤)

分析與處理:#ifndef 必須以單個標識符(只此一個)作為該指令的體。

Bad undef directive syntax (undef指令語法錯誤)

分析與處理:#undef指令必須以單個標識符(只此一個)作為該指令的體。

Bad file size syntax (位字段長語法錯誤)

分析與處理:一個位字段長必須是1—16位的常量表達式。

Call of non-functin (調用未定義函數)

分析與處理:正被調用的函數無定義,通常是由於不正確的函數聲明或函數名拼錯而造成。

Cannot modify a const object (不能修改一個長量對象)

分析與處理:對定義為常量的對象進行不合法操作(如常量賦值)引起本錯誤。

Case outside of switch (Case 出現在switch外)

分析與處理:編譯程序發現Case語句出現在switch語句之外,這類故障通常是由於括號不匹配造成的。

Case statement missing (Case語句漏掉)

分析與處理:Case語必須包含一個以冒號結束的常量表達式,如果漏了冒號或在冒號前多了其它符號,則

會出現此類錯誤。

Character constant too long (字符常量太長)

分析與處理:字符常量的長度通常只能是一個或兩個字符長,超過此長度則會出現這種錯誤。

Compound statement missing (漏掉復合語句)

分析與處理:編譯程序掃描到源文件未時,未發現結束符號 (大括號),此類故障通常是由於大括號不匹

配所致。

Conflicting type modifiers (類型修飾符沖突)

分析與處理:對同一指針,只能指定一種變址修飾符(如near 或far);而對於同一函數,也只能給出一種

語言修飾符(如Cdecl、pascal或interrupt)。

Constant expression required (需要常量表達式)

分析與處理:數組的大小必須是常量,本錯誤通常是由於#define常量的拼寫錯誤引起。

Could not find file 'xxxxxx.xxx' (找不到'xxxxxx.xx'文件)

分析與處理:編譯程序找不到命令行上給出的文件。

Declaration missing (漏掉了說明)

分析與處理:當源文件中包含了一個struct或 union域聲明,而後面漏掉了分號,則會出現此類錯誤。

Declaration needs type or storage class(說明必須給出類型或存儲類)

分析與處理:正確的變量說明必須指出變量類型,否則會出現此類錯誤。

Declaration syntax error (說明出現語法錯誤)

分析與處理:在源文件中,若某個說明丟失了某些符號或輸入多余的符號,則會出現此類錯誤。

Default outside of switch (Default語句在switch語句外出現)

分析與處理:這類錯誤通常是由於括號不匹配引起的。

Define directive needs an identifier (Define指令必須有一個標識符)

分析與處理:#define 後面的第一個非空格符必須是一個標識符,若該位置出現其它字符,則會引起此類錯誤。

Copyright © Linux教程網 All Rights Reserved