VC中的常見錯誤提示解釋

在C語言中的常見錯誤提示解釋

工具/原料

電腦
VC軟體

方法/步驟

1. error C2001: newline in constant 編號:C2001

直譯:在常量中出現了換行。 錯誤分析:

(1) 字符串常量、字符常量中是否有換行。

(2) 在這句語句中,某個字符串常量的尾部是否漏掉了雙引號。

(3) 在這語句中,某個字符創常量中是否出現了雙引號字符「"」,但是沒有使用轉義符「\"」。

(4) 在這句語句中,某個字符常量的尾部是否漏掉了單引號。

(5) 是否在某句語句的尾部,或語句的中間誤輸入了一個單引號或雙引號。

2. error C2015: too many characters in constant 編號:C2015

直譯:字符常量中的字符太多了。 錯誤分析:

單引號表示字符型常量。一般的,單引號中必須有,也只能有一個字符(使用轉義符時,轉義符所表示的字符當作一個字符看待),如果單引號中的字符數多於4個,就會引發這個錯誤。

另外,如果語句中某個字符常量缺少右邊的單引號,也會引發這個錯誤,例如: if (x == 'x || x == 'y') { … }

值得注意的是,如果單引號中的字符數是2-4個,編譯不報錯,輸出結果是這幾個字母的ASC碼作為一個整數(int,4B)整體看待的數字。

兩個單引號之間不加任何內容會引發如下錯誤:error C2137: empty character constant。

3. error C2018: unknown character '0x##' 編號:C2018

直譯:未知字符„0x##‟。 錯誤分析:

0x##是字符ASC碼的16進位表示法。這裡說的未知字符,通常是指全角符號、字母、數字,或者直接輸入了漢字。如果全角字符和漢字用雙引號包含起來,則成為字符串常量的一部分,是不會引發這個錯誤的。

4. error C2041: illegal digit '#' for base '8' 編號:C2141

直譯:在八進位中出現了非法的數字„#‟(這個數字#通常是8或者9)。 錯誤分析:

如果某個數字常量以「0」開頭(單純的數字0除外),那麼編譯器會認為這是一個8進位數字。例如:「089」、「078」、「093」都是非法的,而「071」是合法的,等同於是進位中的「57」。

5. error C2086: 'xxxx' : redefinition 編號:C2374

直譯:「xxxx」重複申明。 錯誤分析:

變量「xxxx」在同一作用域中定義了多次。檢查「xxxx」的每一次定義,只保留一個,或者更改變量名。

6. error C2374: 'xxxx' : redefinition; multiple initialization 編號:C2374

直譯:「xxxx」重複申明,多次初始化。 錯誤分析:

變量「xxxx」在同一作用域中定義了多次,並且進行了多次初始化。檢查「xxxx」的每一次定義,只保留一個,或者更改變量名。

7. C2143: syntax error : missing ';' before (identifier) 'xxxx' 編號:C2143

直譯:在(標誌符)「xxxx」前缺少分號。 錯誤分析:

這是VC6的編譯期最常見的誤報,當出現這個錯誤時,往往所指的語句並沒有錯誤,而是它的上一句語句發生了錯誤。其實,更合適的做法是編譯器報告在上一句語句的尾部缺少分號。上一句語句的很多種錯誤都會導致編譯器報出這個錯誤: (1) 上一句語句的末尾真的缺少分號。那麼補上就可以了。

(2) 上一句語句不完整,或者有明顯的語法錯誤,或者根本不能算上一句語句(有時候是無意中按到鍵盤所致)。

(3) 如果發現發生錯誤的語句是cpp文件的第一行語句,在本文件中檢查沒有錯誤,而且這個文件使用雙引號包含了某個頭文件,那麼檢查這個頭文件,在這個頭文件的尾部可能有錯誤。

var cpro_psid ="u2572954"; var cpro_pswidth =966; var cpro_psheight =120;

8. error C2137: empty character constant 編號:C2137

直譯:空的字符定義。 錯誤分析:

原因是連用了兩個單引號,而中間沒有任何字符。一般的,單引號表示字符型常量,單引號中必須有,也只能有一個字符(使用轉義符時,轉義符所表示的字符當作一個字符看待)。兩個單引號之間不加任何內容是不允許的。

需要注意的是:如果單引號中的字符數是2-4個,編譯不報錯,輸出結果是這幾個字母的ASC碼作為一個整數(int,4B)整體看待的數字。

如果單引號中的字符數多於4個,會引發2015錯誤:error C2015: too many characters in constant。

9. error C2374: 'xxxx' : redefinition; multiple initialization 編號:C2374

直譯:「xxxx」重複申明,多次初始化。 錯誤分析:

變量「xxxx」在同一作用域中定義了多次,並且進行了多次初始化。檢查「xxxx」的每一次定義,只保留一個,或者更改變量名。

本文內容整理自網絡, 文中所有觀點看法不代表淘大白的立場