一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - C/C++ - VC6.0常見編譯錯(cuò)誤提示附解決方法

VC6.0常見編譯錯(cuò)誤提示附解決方法

2020-12-18 14:44C語(yǔ)言教程網(wǎng) C/C++

這篇文章主要介紹了VC++6.0編譯過程中常遇到的一些錯(cuò)誤提示并給出了錯(cuò)誤原因與分析,需要的朋友尅參考下

(1)error C2001: newline in constant

編號(hào):C2001
直譯:在常量中出現(xiàn)了換行。
錯(cuò)誤分析:
1.①字符串常量、字符常量中是否有換行。
2.②在這句語(yǔ)句中,某個(gè)字符串常量的尾部是否漏掉了雙引號(hào)。
3.③在這語(yǔ)句中,某個(gè)字符創(chuàng)常量中是否出現(xiàn)了雙引號(hào)字符“"”,但是沒有使用轉(zhuǎn)義符“\"”。
4.④在這句語(yǔ)句中,某個(gè)字符常量的尾部是否漏掉了單引號(hào)。
5.⑤是否在某句語(yǔ)句的尾部,或語(yǔ)句的中間誤輸入了一個(gè)單引號(hào)或雙引號(hào)。

(2)error C2015: too many characters in constant

編號(hào):C2015
直譯:字符常量中的字符太多了。
錯(cuò)誤分析:
單引號(hào)表示字符型常量。一般的,單引號(hào)中必須有且只能有一個(gè)字符(使用轉(zhuǎn)義符時(shí),轉(zhuǎn)義符所表示的字符當(dāng)作一個(gè)字符看待),如果單引號(hào)中的字符數(shù)多于4個(gè),就會(huì)引發(fā)這個(gè)錯(cuò)誤。
另外,如果語(yǔ)句中某個(gè)字符常量缺少右邊的單引號(hào),也會(huì)引發(fā)這個(gè)錯(cuò)誤,例如:
if (x == 'x || x == 'y') { … }
值得注意的是,如果單引號(hào)中的字符數(shù)是2-4個(gè),編譯不報(bào)錯(cuò),輸出結(jié)果是這幾個(gè)字母的ASC碼作為一個(gè)整數(shù)(int,4B)整體看待的數(shù)字。

(3)error C2137: empty character constant

編號(hào):C2137
直譯:空的字符定義。
錯(cuò)誤分析:
原因是連用了兩個(gè)單引號(hào),而中間沒有任何字符,這是不允許的。

(4)error C2018: unknown character '0x##'

編號(hào):C2018
直譯:未知字符‘0x##'。
錯(cuò)誤分析:
0x##是字符ASC碼的16進(jìn)制表示法。這里說的未知字符,通常是指全角符號(hào)、字母、數(shù)字,或者直接輸入了漢字。如果全角字符和漢字用雙引號(hào)包含起來,則成為字符串常量的一部分,是不會(huì)引發(fā)這個(gè)錯(cuò)誤的。

(5)error C2041: illegal digit '#' for base '8'

編號(hào):C2141
直譯:在八進(jìn)制中出現(xiàn)了非法的數(shù)字‘#'(這個(gè)數(shù)字#通常是8或者9)。
錯(cuò)誤分析:
如果某個(gè)數(shù)字常量以“0”開頭(單純的數(shù)字0除外),那么編譯器會(huì)認(rèn)為這是一個(gè)8進(jìn)制數(shù)字。例如:“089”、“078”、“093”都是非法的,而“071”是合法的,等同于是進(jìn)制中的“57”。

(6)error C2065: 'xxxx' : undeclared identifier

編號(hào):C2065
直譯:標(biāo)識(shí)符“xxxx”未定義。
錯(cuò)誤分析:
首先,解釋一下什么是標(biāo)識(shí)符。標(biāo)志符是程序中出現(xiàn)的除關(guān)鍵字之外的詞,通常由字母、數(shù)字和下劃線組成,不能以數(shù)字開頭,不能與關(guān)鍵字重復(fù),并且區(qū)分大小寫。變量名、函數(shù)名、類名、常量名等等,都是標(biāo)志符。所有的標(biāo)志符都必須先定義,后使用。標(biāo)志符有很多種用途,所以錯(cuò)誤也有很多種原因。

1.如果“xxxx”是一個(gè)變量名,那么通常是程序員忘記了定義這個(gè)變量,或者拼寫錯(cuò)誤、大小寫錯(cuò)誤所引起的,所以,首先檢查變量名是否正確。(關(guān)聯(lián):變量,變量定義)
2.如果“xxxx”是一個(gè)函數(shù)名,那就懷疑函數(shù)名是否沒有定義。可能是拼寫錯(cuò)誤或大小寫錯(cuò)誤,當(dāng)然,也有可能是你所調(diào)用的函數(shù)根本不存在。還有一種可能,你寫的函數(shù)在你調(diào)用所在的函數(shù)之后,而你有沒有在調(diào)用之前對(duì)函數(shù)原形進(jìn)行申明。(關(guān)聯(lián):函數(shù)申明與定義,函數(shù)原型)
3.如果“xxxx”是一個(gè)庫(kù)函數(shù)的函數(shù)名,比如“sqrt”、“fabs”,那么看看你在cpp文件已開始是否包含了這些庫(kù)函數(shù)所在的頭文件(.h文件)。例如,使用“sqrt”函數(shù)需要頭文件math.h。如果“xxxx”就是“cin”或“cout”,那么一般是沒有包含“iostream.h”。(關(guān)聯(lián):#include,cin,cout)
4.如果“xxxx”是一個(gè)類名,那么表示這個(gè)類沒有定義,可能性依然是:根本沒有定義這個(gè)類,或者拼寫錯(cuò)誤,或者大小寫錯(cuò)誤,或者缺少頭文件,或者類的使用在申明之前。(關(guān)聯(lián):類,類定義)
5.標(biāo)志符遵循先申明后使用原則。所以,無論是變量、函數(shù)名、類名,都必須先定義,后使用。如使用在前,申明在后,就會(huì)引發(fā)這個(gè)錯(cuò)誤。
6.C++的作用域也會(huì)成為引發(fā)這個(gè)錯(cuò)誤的陷阱。在花括號(hào)之內(nèi)變量,是不能在這個(gè)花括號(hào)之外使用的。類、函數(shù)、if、do(while)、for所引起的花括號(hào)都遵循這個(gè)規(guī)則。(關(guān)聯(lián):作用域)
7.前面某句語(yǔ)句的錯(cuò)誤也可能導(dǎo)致編譯器誤認(rèn)為這一句有錯(cuò)。如果你前面的變量定義語(yǔ)句有錯(cuò)誤,編譯器在后面的編譯中會(huì)認(rèn)為該變量從來沒有定義過,以致后面所有使用這個(gè)變量的語(yǔ)句都報(bào)這個(gè)錯(cuò)誤。如果函數(shù)申明語(yǔ)句有錯(cuò)誤,那么將會(huì)引發(fā)同樣的問題。

(7)error C2086: 'xxxx' : redefinition

編號(hào):C2374
直譯:“xxxx”重復(fù)申明。
錯(cuò)誤分析:
變量“xxxx”在同一作用域中定義了多次。檢查“xxxx”的每一次定義,只保留一個(gè),或者更改變量名。

(8)error C2374: 'xxxx' : redefinition; multiple initialization

編號(hào):C2374
直譯:“xxxx”重復(fù)申明,多次初始化。
錯(cuò)誤分析:
變量“xxxx”在同一作用域中定義了多次,并且進(jìn)行了多次初始化。檢查“xxxx”的每一次定義,只保留一個(gè),或者更改變量名。

(9)C2143: syntax error : missing ';' before (identifier) 'xxxx'

編號(hào):C2143
直譯:在(標(biāo)志符)“xxxx”前缺少分號(hào)。
錯(cuò)誤分析:
這是VC6的編譯期最常見的誤報(bào),當(dāng)出現(xiàn)這個(gè)錯(cuò)誤時(shí),往往所指的語(yǔ)句并沒有錯(cuò)誤,而是它的上一句語(yǔ)句發(fā)生了錯(cuò)誤。其實(shí),更合適的做法是編譯器報(bào)告在上一句語(yǔ)句的尾部缺少分號(hào)。上一句語(yǔ)句的很多種錯(cuò)誤都會(huì)導(dǎo)致編譯器報(bào)出這個(gè)錯(cuò)誤:

1.上一句語(yǔ)句的末尾真的缺少分號(hào)。那么補(bǔ)上就可以了。
2.上一句語(yǔ)句不完整,或者有明顯的語(yǔ)法錯(cuò)誤,或者根本不能算上一句語(yǔ)句(有時(shí)候是無意中按到鍵盤所致)。
3.如果發(fā)現(xiàn)發(fā)生錯(cuò)誤的語(yǔ)句是cpp文件的第一行語(yǔ)句,在本文件中檢查沒有錯(cuò)誤,但其使用雙引號(hào)包含了某個(gè)頭文件,那么檢查這個(gè)頭文件,在這個(gè)頭文件的尾部可能有錯(cuò)誤。

(10)error C4716: 'xxx' : must return a value

編號(hào):C4716
直譯:“xxx”必須返回一個(gè)值。
錯(cuò)誤分析:
函數(shù)聲明了有返回值(不為void),但函數(shù)實(shí)現(xiàn)中忘記了return 返回值。要么函數(shù)確實(shí)沒有返回值,則修改其返回值類型為void,要么在函數(shù)結(jié)束前返回合適的值。

(11) warning C4508: 'main' : function should return a value; 'void' return type assumed

編號(hào):C4508
直譯:main函數(shù)應(yīng)該返回一個(gè)值;void返回值類型被假定。
錯(cuò)誤分析:

1.函數(shù)應(yīng)該有返回值,聲明函數(shù)時(shí)應(yīng)指明返回值的類型,確實(shí)無返回值的,應(yīng)將函數(shù)返回值聲明為void。若未聲明函數(shù)返回值的類型,則系統(tǒng)默認(rèn)為整型int。此處的錯(cuò)誤估計(jì)是在main函數(shù)中沒有return返回值語(yǔ)句,而main函數(shù)要么沒有聲明其返回值的類型,要么聲明了。
2.warning類型的錯(cuò)誤為警告性質(zhì)的錯(cuò)誤,其意思是并不一定有錯(cuò),程序仍可以被成功編譯、鏈接,但可能有問題、有風(fēng)險(xiǎn)。

(12)warning C4700: local variable 'xxx' used without having been initialized

編號(hào):C4700
直譯:警告局部變量“xxx”在使用前沒有被初始化。
錯(cuò)誤分析:
這是初學(xué)者常見的錯(cuò)誤,例如以下程序段就會(huì)造成這樣的警告,而且程序的確有問題,應(yīng)加以修改,盡管編譯、鏈接可以成功——若不修改,x的值到底是多少無法確定,是隨機(jī)的,判斷其是否與3相同沒有意義,在運(yùn)氣不好的情況下,可能在調(diào)試程序的機(jī)器上運(yùn)行時(shí),結(jié)果看起來是對(duì)的,但更換計(jì)算機(jī)后再運(yùn)行,結(jié)果就不對(duì),初學(xué)者往往感到迷惑。
int x;
if (x==3) printf("hello");

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 2018高清国产一道国产 | 色老板在线观看 | 国产亚洲综合成人91精品 | 国产肥老上视频 | 久久久精品日本一区二区三区 | 91久久线看在观草草青青 | 国产动作大片 | 国产精品igao视频网网址 | 国产精品久久久久久久久99热 | 美女的隐私视频免费看软件 | 青青色综合 | 亚洲第一国产 | 波多野结在线 | 亚洲成人福利网站 | 网址在线观看你懂我意思吧免费的 | 男女激情网 | 日本手机在线视频 | 曹逼网站 | 国产手机在线观看 | 日韩在线观看网站 | bl双性小说| 从后面撕开老师的丝袜动态图 | 好女孩韩剧免费观看 | 国产我不卡| 欧美人与禽交片在线播放 | 无码人妻少妇色欲AV一区二区 | 国产精品精品 | 欧美日韩国产一区二区三区伦 | blacked在线播放 | 91噜噜噜噜色 | 美国一级大黄大色毛片 | 99精彩视频在线观看 | 贰佰麻豆剧果冻传媒一二三区 | 爱色综合v | 亚洲精品一二三四区 | 午夜伦午夜伦锂电影 | 三星w699| 亚洲精品国产精品麻豆99 | 日韩精品亚洲一级在线观看 | 91短视频在线播放 | 99久久免费国产特黄 |