編譯器錯誤 C2001 錯誤消息 常數(shù)中有換行符
字符串常數(shù)不能繼續(xù)到第二行,除非進行下列操作: •用反斜杠結(jié)束第一行。
•用一個雙引號結(jié)束第一行上的字符串,并在下一行用另一個雙引號開始該字符串。
用 \n 結(jié)束第一行是不夠的。 編譯器錯誤 C2002 錯誤消息
無效的寬字符常數(shù) 多字節(jié)字符常數(shù)是非法的。
通過檢查下面的可能原因進行修復(fù) 1.寬字符常數(shù)包含的字節(jié)比需要的多。
2.未包括標(biāo)準(zhǔn)頭文件 STDDEF.h。
3.寬字符不能與一般字符串連接。 4.寬字符常數(shù)之前必須是字符“L”: 編譯器錯誤
C2003 錯誤消息 應(yīng)輸入“defined id”
標(biāo)識符必須跟在預(yù)處理器關(guān)鍵字之后。 編譯器錯誤 C2004 錯誤消息
應(yīng)為“defined(id)” 標(biāo)識符必須出現(xiàn)在預(yù)處理器關(guān)鍵字之后的括號中。
也可能由于為 Visual Studio .NET 2003
進行的編譯器一致性工作生成此錯誤:在預(yù)處理器指令中缺少括號。
如果預(yù)處理器指令缺少右括號,則編譯器將生成一個錯誤。 編譯器錯誤 C2005 錯誤消息
#line 應(yīng)跟一個行號,卻找到“token” #line
指令后面必須跟行號。 編譯器錯誤 C2006 錯誤消息
“directive”應(yīng)輸入文件名,卻找到“token” 諸如 #include 或
#import 等指令需要文件名。若要解決該錯誤,請確保 token
是一個有效文件名。并且將該文件名放在雙引號或尖括號中。 編譯器錯誤 C2007 錯誤消息
#define 語法 #define 后未出現(xiàn)標(biāo)識符。若要解決該錯誤,請使用標(biāo)識符。
編譯器錯誤 C2008 錯誤消息 “character”: 宏定義中的意外
該字符緊跟在宏名之后。若要解決該錯誤,宏名之后必須有一個空格。 編譯器錯誤 C2009
錯誤消息 宏形式“identifier”重復(fù)使用
宏定義的形參表多次使用該標(biāo)識符。宏的參數(shù)列表中的標(biāo)識符必須是唯一的。 編譯器錯誤 C2010 錯誤消息
“character”: 宏形參表中的意外
該字符在宏定義的形參表中使用不正確。移除該字符以解決該錯誤。 編譯器錯誤 C2011 錯誤消息
“identifier”:“type”類型重定義 該標(biāo)識符已定義為 type
類型。如果多次將某個類型庫導(dǎo)入同一個文件,也可能生成 C2011。 編譯器錯誤 C2012 錯誤消息
在“<”之后缺少名稱 #include 指令缺少所需的文件名。 編譯器錯誤
C2013 錯誤消息 缺少“>”
#include 指令缺少右尖括號。添加右尖括號以解決該錯誤。 編譯器錯誤 C2014 錯誤消息
預(yù)處理器命令必須作為第一個非空白空間啟動
預(yù)處理器指令的 # 符號必須是非空白行上的第一個字符。 編譯器錯誤 C2015 錯誤消息
常數(shù)中的字符太多
一個字符常數(shù)包含的字符多于兩個。標(biāo)準(zhǔn)字符常數(shù)只能包含一個字符,長字符常數(shù)只能包含兩個字符。
轉(zhuǎn)義序列(如 \t)將被轉(zhuǎn)換為單個字符。 當(dāng)使用 Microsoft
擴展將字符常數(shù)轉(zhuǎn)換為整數(shù)時,也可能發(fā)生 C2015。 編譯器錯誤 C2017 錯誤消息
非法的轉(zhuǎn)義序列 轉(zhuǎn)義序列(如 \t)出現(xiàn)在字符或字符串常數(shù)之外。
當(dāng) stringize 運算符與包括轉(zhuǎn)義序列的字符串一起使用時會發(fā)生 C2017。 編譯器錯誤 C2018
錯誤消息 未知字符“hexnumber”
源文件包含一個意外的 ASCII 字符,該字符由其十六進制數(shù)標(biāo)識。若要解決該錯誤,請移除該字符。 編譯器錯誤 C2019 錯誤消息
應(yīng)找到預(yù)處理器指令,卻找到“character”
該字符跟在 # 符號的后面,但它不是預(yù)處理器指令的第一個字母。 編譯器錯誤 C2020 錯誤消息
“member”:“class”成員重定義
從基類或結(jié)構(gòu)繼承的成員被重定義。不能重定義繼承成員,除非它在基類中被聲明為 virtual。 編譯器錯誤 C2021 錯誤消息
應(yīng)輸入指數(shù)值,而非“character”
用作浮點常數(shù)的指數(shù)的字符是一個無效數(shù)字。確保使用的指數(shù)在范圍之內(nèi)。 編譯器錯誤 C2022 錯誤消息
“number”: 對字符來說太大 字符或字符串常數(shù)中跟在反斜杠 (\)
后面的八進制數(shù)字太大,不能表示字符。 編譯器錯誤 C2026 錯誤消息
字符串太大,已截斷尾部字符 該字符串的長度超過了 16380 個單字節(jié)字符的**。
連接相鄰字符串之前,字符串的長度不能超過 16380 個單字節(jié)字符。
大約為此長度的一半的 Unicode 字符串也會生成此錯誤。 編譯器錯誤 C2027 錯誤消息
使用了未定義類型“type”
類型只有經(jīng)過定義才能使用。若要解決該錯誤,請確保在引用類型前已對其進行了完全定義。
有可能聲明一個指向已聲明但未定義的類型的指針。但是 Visual C++ 不允許引用未定義的類型。 編譯器錯誤 C2028 錯誤消息
結(jié)構(gòu)/聯(lián)合成員必須在結(jié)構(gòu)/聯(lián)合中
結(jié)構(gòu)或聯(lián)合成員必須在結(jié)構(gòu)或聯(lián)合內(nèi)部聲明。 編譯器錯誤 C2030 錯誤消息
“identifier”: 結(jié)構(gòu)/聯(lián)合成員重定義
結(jié)構(gòu)或聯(lián)合將同一標(biāo)識符用于多個成員。 編譯器錯誤 C2032 錯誤消息
“identifier”: 函數(shù)不能是結(jié)構(gòu)/聯(lián)合“structorunion”的成員
該結(jié)構(gòu)或聯(lián)合中的一個成員函數(shù)在 C++ 中允許使用而在 C 中卻不允許。若要解決該錯誤,請編譯為 C++ 程序或移除該成員函數(shù)。
編譯器錯誤 C2033 錯誤消息 “identifier”:
位域不能有間接尋址 該位域被聲明為指針,這是不允許的。 編譯器錯誤 C2034 錯誤消息
“identifier”: 位域類型對于位數(shù)太小
該位域聲明中位的數(shù)目超過了基類型的大小。 編譯器錯誤 C2036 錯誤消息
“identifier”: 未知的大小 對 identifier
的操作需要數(shù)據(jù)對象的大小,而該大小無法確定。 編譯器錯誤 C2039 錯誤消息
“identifier1”: 不是“identifier2”的成員 該代碼錯誤調(diào)用或引用了結(jié)構(gòu)、類或聯(lián)合的成員。 編譯器錯誤 C2040
錯誤消息
“operator”:“identifier1”與“identifier2”的間接尋址級別不同
涉及該運算符的表達(dá)式具有不一致的間接尋址級別。
如果兩個操作數(shù)都是算術(shù)的或都是非算術(shù)的(如數(shù)組或指針),則不用更改就可使用它們。如果一個操作數(shù)是算術(shù)的,而另一個不是,則算術(shù)運算符將轉(zhuǎn)換為非算術(shù)類型。 編譯器錯誤
C2041 錯誤消息 非法的數(shù)字“character”(用于基“number”)
指定的字符不是基(如八進制或十六進制)的有效數(shù)字。 編譯器錯誤 C2042
錯誤消息 signed/unsigned 關(guān)鍵字互相排斥
在單個聲明中使用關(guān)鍵字 signed 和 unsigned。 編譯器錯誤 C2043 錯誤消息
非法 break break 僅在
do、for、while 或 switch 語句中合法。 編譯器錯誤 C2044 錯誤消息
非法 continue continue 僅在 do、for 或
while 語句中合法。 編譯器錯誤 C2045 錯誤消息 “identifier”:
標(biāo)簽重定義 該標(biāo)簽出現(xiàn)在同一函數(shù)中的多條語句之前。 編譯器錯誤 C2046 錯誤消息
非法的 case
關(guān)鍵字 case 只能出現(xiàn)在 switch 語句中。 編譯器錯誤 C2047 錯誤消息
非法的 default 關(guān)鍵字 default 僅能出現(xiàn)在 switch
語句中。 編譯器錯誤 C2048 錯誤消息 默認(rèn)值多于一個
switch 語句包含多個 default 標(biāo)簽。刪除其中一個 default
標(biāo)簽可解決該錯誤。 編譯器錯誤 C2050 錯誤消息 switch
表達(dá)式不是整型 switch 表達(dá)式計算結(jié)果為一個非整數(shù)值。若要解決該錯誤,請在 switch
語句中只使用整數(shù)值。 編譯器錯誤 C2051 錯誤消息 case
表達(dá)式不是常數(shù) Case 表達(dá)式必須是整數(shù)常數(shù)。 編譯器錯誤 C2052 錯誤消息
“type”: 非法的 case 表達(dá)式類型
Case 表達(dá)式必須是整數(shù)常數(shù)。 編譯器錯誤 C2053 錯誤消息
“identifier”: 寬字符串不匹配 寬字符串被分配給了一個不兼容的類型。
編譯器錯誤 C2054 錯誤消息 在“identifier”之后應(yīng)輸入“(”
該函數(shù)標(biāo)識符用在需要尾部括號的上下文中。
導(dǎo)致該錯誤的可能原因是省略了復(fù)雜初始化上的等號 (=)。 編譯器錯誤 C2055 錯誤消息
應(yīng)輸入形參表,而不是類型表 函數(shù)定義包含參數(shù)類型列表而不包含形參表。ANSI C
需要命名的形參,除非它們是 void 或是省略號 (...)。 編譯器錯誤 C2056 錯誤消息
非法表達(dá)式 表達(dá)式因前一個錯誤而無效。 編譯器錯誤 C2057 錯誤消息
應(yīng)輸入常數(shù)表達(dá)式
上下文要求常數(shù)表達(dá)式,即其值在編譯時已知的表達(dá)式。 編譯器錯誤 C2058 錯誤消息
常數(shù)表達(dá)式不是整型 該上下文需要整數(shù)常數(shù)表達(dá)式。 編譯器錯誤 C2059 錯誤消息
語法錯誤 :“token”
該標(biāo)記導(dǎo)致語法錯誤。
若要確定原因,則不僅要檢查在錯誤信息中列出的行,還要檢查該行上面的行。下面的示例對聲明 j
的行生成了錯誤信息,而該錯誤的真正源卻出現(xiàn)在其上面的行中。
如果對行的檢查沒有獲得有關(guān)可能出現(xiàn)的問題的任何線索,則嘗試注釋掉在錯誤信息中列出的行以及可能出現(xiàn)在該行上面的若干行。
如果該錯誤信息在緊跟 typedef 變量的符號上出現(xiàn),則檢查該變量是否已在源代碼中定義。
如果符號沒有計算出任何結(jié)果(在使用 /Dsymbol= 編譯時可能發(fā)生),可能會導(dǎo)致 C2059。
可能收到 C2059
的另一個特定原因是編譯在函數(shù)的默認(rèn)參數(shù)中指定了結(jié)構(gòu)的應(yīng)用程序。參數(shù)的默認(rèn)值必須是一個表達(dá)式。初始值設(shè)定項列表(如用于初始化結(jié)構(gòu)的初始值設(shè)定項列表)不是表達(dá)式。其解決方法是定義一個執(zhí)行所需初始化的構(gòu)造函數(shù)。 編譯器錯誤
C2060 錯誤消息 語法錯誤 : 遇到文件結(jié)束
至少還需要一個標(biāo)記。 編譯器錯誤 C2061 錯誤消息 語法錯誤:
標(biāo)識符“identifier” 編譯器發(fā)現(xiàn)了不應(yīng)在此出現(xiàn)的標(biāo)識符。請確保在使用 identifier
之前對其進行聲明。 初始值設(shè)定項可能括在了括號中。為避免該問題,請將聲明符括在括號中或使其成為
typedef。 在編譯器將表達(dá)式作為類模板參數(shù)檢測時也可能導(dǎo)致此錯誤;使用 typename
告訴編譯器它是一個類型。 編譯器錯誤 C2062 錯誤消息
意外的類型“type” 編譯器不需要類型名稱。
編譯器處理構(gòu)造函數(shù)的參數(shù)列表中未定義類型的方式也可能導(dǎo)致 C2062。如果編譯器遇到未定義的(拼錯了嗎?)類型,則它假定構(gòu)造函數(shù)是一個表達(dá)式,并發(fā)出
C2062。若要解決此錯誤,請只使用構(gòu)造函數(shù)參數(shù)列表中的定義類型。 編譯器錯誤 C2063 錯誤消息
“identifier”: 不是函數(shù) 該標(biāo)識符用作函數(shù),但未聲明為函數(shù)。
編譯器錯誤 C2064 錯誤消息
項不會計算為接受“number”個參數(shù)的函數(shù)
通過表達(dá)式調(diào)用了函數(shù)。該表達(dá)式未計算為函數(shù)指針。 編譯器錯誤 C2065 錯誤消息
“identifier”: 未聲明的標(biāo)識符
在可使用變量的類型前必須在聲明中指定它。在可以使用函數(shù)前必須在聲明或原型中指定該函數(shù)使用的參數(shù)。
可能的原因: 1.您正在用 C 運行庫的調(diào)試版本進行編譯,在 for 循環(huán)中聲明標(biāo)準(zhǔn) C++
庫迭代器變量,然后嘗試在 for 循環(huán)范圍外使用該迭代器變量。 用 C 運行庫的調(diào)試版本編譯標(biāo)準(zhǔn) C++ 庫代碼暗指使用
/Zc:forScope。有關(guān)更多信息,請參見調(diào)試迭代器支持。 2.可能正在調(diào)用當(dāng)前不受生成環(huán)境支持的
SDK 頭文件中的函數(shù)。 3.省略必要的包含文件,尤其是在定義
VC_EXTRALEAN、WIN32_LEAN_AND_MEAN 或 WIN32_EXTRA_LEAN 時。這些符號從 windows.h 和
afxv_w32.h 中排除了一些頭文件以加快編譯。(在 windows.h 和 afxv_w32.h 中查找排除的頭文件的最新說明。)
4.標(biāo)識符名拼寫錯誤。
5.標(biāo)識符使用了錯誤的大小寫字母。 6.字符串常數(shù)的后面缺少右引號。
7.命名空間范圍不正確。例如,若要解析 ANSI C++ 標(biāo)準(zhǔn)庫函數(shù)和運算符,則必須用 using 指令指定 std
命名空間。下面的示例未能編譯,因為 using 指令被注釋掉,并且在 std 命名空間中定義了 cout: 編譯器錯誤 C2066 錯誤消息
轉(zhuǎn)換到函數(shù)類型是非法的 在 ANSI
C 中,函數(shù)指針和數(shù)據(jù)指針間的轉(zhuǎn)換是非法的。 編譯器錯誤 C2067 錯誤消息
轉(zhuǎn)換到數(shù)組類型是非法的 對象被轉(zhuǎn)換成了數(shù)組類型。 編譯器錯誤 C2069 錯誤消息
“void”項到非“void”項的強制轉(zhuǎn)換
類型 void 不能轉(zhuǎn)換成任何其他類型。 編譯器錯誤 C2070 錯誤消息
“type”: 非法的 sizeof 操作數(shù) sizeof 運算符需要一個表達(dá)式或類型名稱。
編譯器錯誤 C2071 錯誤消息 “identifier”: 非法的存儲類
聲明 identifier 所用的存儲類無效。 編譯器錯誤 C2072 錯誤消息
“identifier”: 函數(shù)的初始化
錯誤指定了函數(shù)初始值設(shè)定項。 編譯器錯誤 C2073 錯誤消息
“identifier”: 部分初始化數(shù)組的元素必須有默認(rèn)構(gòu)造函數(shù)
為用戶定義的類型或常數(shù)的數(shù)組指定的初始值設(shè)定項太少。如果沒有為數(shù)組成員指定明確的初始值設(shè)定項及其對應(yīng)的構(gòu)造函數(shù),則必須提供默認(rèn)的構(gòu)造函數(shù)。 編譯器錯誤
C2074 錯誤消息 “identifier”:“class-key”初始化需要大括號
在指定的類、結(jié)構(gòu)或聯(lián)合初始值設(shè)定項兩邊沒有大括號。 編譯器錯誤 C2075 錯誤消息
“identifier”: 數(shù)組初始化需要大括號
在指定的數(shù)組初始值設(shè)定項兩邊沒有大括號。 編譯器錯誤 C2077 錯誤消息
非標(biāo)量字段初始值設(shè)定項“identifier”
試圖用非標(biāo)量(結(jié)構(gòu)、聯(lián)合、數(shù)組或類)初始化位域。使用整數(shù)值或浮點值。 編譯器錯誤 C2078 錯誤消息
初始值設(shè)定項太多 初始值設(shè)定項的數(shù)目超過了要初始化的對象數(shù)。 編譯器錯誤
C2079 錯誤消息 “identifier”使用未定義的類/結(jié)構(gòu)/聯(lián)合“name”
指定的標(biāo)識符是一個未定義的類、結(jié)構(gòu)或聯(lián)合。
初始化匿名聯(lián)合時,可能會導(dǎo)致此錯誤。 編譯器錯誤 C2081 錯誤消息
“identifier”: 形參表中的名稱非法 標(biāo)識符導(dǎo)致語法錯誤。
此錯誤可能是由使用形參表的舊形式導(dǎo)致的。必須在形參表中指定形參的類型。 編譯器錯誤 C2082 錯誤消息
形參“identifier”的重定義
在函數(shù)體中重新聲明了函數(shù)的形參。若要解決該錯誤,請移除該重定義。 編譯器錯誤 C2083 錯誤消息
結(jié)構(gòu)/聯(lián)合比較非法
結(jié)構(gòu)或聯(lián)合直接與另一個用戶定義的類型進行比較。這是不允許的,除非已經(jīng)定義了比較運算符或者存在到標(biāo)量類型的轉(zhuǎn)換。 編譯器錯誤 C2084 錯誤消息
函數(shù)“function”已有主體
函數(shù)已經(jīng)定義。 在以前的 Visual C++ 版本中,
•編譯器將接受解析為同一實際類型的多個模板的專用化,盡管附加的定義將永遠(yuǎn)不可用?,F(xiàn)在編譯器將檢測這些多重定義。
•__int32 和 int 已被視為單獨的類型。編譯器現(xiàn)在將 __int32 作為 int
的同義詞處理。這意味著,如果函數(shù)同時在 __int32 和 int 上重載,編譯器將檢測多個定義,并提供一個錯誤。 編譯器錯誤 C2085 錯誤消息
“identifier”: 不在形參表中
該標(biāo)識符在函數(shù)定義中聲明而未在形參表中聲明。(僅用于 ANSI C) 編譯器錯誤 C2086 錯誤消息
“identifier”: 重定義 多次定義了該標(biāo)識符,或者后面的聲明與前一個不同。
C2086 也可能是增量編譯引用的 C# 程序集的結(jié)果。重新生成該 C#
程序集以解決此錯誤。 編譯器錯誤 C2087 錯誤消息 “identifier”:
缺少下標(biāo) 具有多個下標(biāo)的數(shù)組的定義缺少大于 1 的維度的下標(biāo)值。 編譯器錯誤 C2088
錯誤消息 “operator”: 對于“class-key”非法
沒有為結(jié)構(gòu)或聯(lián)合定義該運算符。該錯誤只對 C 代碼有效。 編譯器錯誤 C2089 錯誤消息
“identifier”:“class-key”太大
指定的結(jié)構(gòu)或聯(lián)合超過 4GB 的**。 編譯器錯誤 C2090 錯誤消息
函數(shù)返回數(shù)組 函數(shù)不能返回數(shù)組。請返回指向數(shù)組的指針。 編譯器錯誤 C2091
錯誤消息 函數(shù)返回函數(shù)
函數(shù)不能返回函數(shù)。請返回指向函數(shù)的指針。 編譯器錯誤 C2092 錯誤消息 “array
name”數(shù)組元素類型不能是函數(shù) 不允許使用函數(shù)數(shù)組。請使用指向函數(shù)的指針的數(shù)組。 編譯器錯誤
C2093 錯誤消息 “variable1”: 無法使用自動變量“variable2”的地址初始化
在用 /Za 編譯時,程序試圖將自動變量的地址用作初始值設(shè)定項。 編譯器錯誤 C2094 錯誤消息
標(biāo)簽“identifier”未定義 goto
語句使用的標(biāo)簽在函數(shù)中不存在。 編譯器錯誤 C2095 錯誤消息 “function”:
實參具有類型“void”:“number”參數(shù) 傳遞給函數(shù)的參數(shù)為 void
類型,這是不允許的。請改為使用指向 void 的指針 (void *)。 number
指示哪一個參數(shù)為 void。 編譯器錯誤 C2097 錯誤消息 非法的初始化
通過檢查下面的可能原因進行修復(fù)
1.使用非常數(shù)值初始化變量。 2.用長地址初始化短地址。
3.在用 /Za 編譯時,用非常數(shù)表達(dá)式初始化局部結(jié)構(gòu)、聯(lián)合或數(shù)組。
4.用包含逗號運算符的表達(dá)式初始化。 5.用既非常數(shù)又非符號的表達(dá)式初始化。 編譯器錯誤
C2099 錯誤消息 初始值設(shè)定項不是常數(shù)
此錯誤只由 C 編譯器發(fā)出,而且只對非自動變量發(fā)生。編譯器在程序的開頭對非自動變量進行初始化,并且用于對這些變量進行初始化的值必須是常數(shù)。
由于編譯時與運行時的浮點精度環(huán)境設(shè)置(有關(guān)更多信息,請參見
_controlfp_s)可能不同,因此,編譯器無法在 /fp:strict 下對表達(dá)式執(zhí)行常數(shù)合并。在這種情況下,也可能發(fā)生 C2099。
當(dāng)常數(shù)合并失敗時,編譯器調(diào)用動態(tài)初始化,這在 C 中是不允許的。
要解決此錯誤,請將模塊編譯為 .cpp 文件或?qū)Ρ磉_(dá)式進行簡化。
|