C語言常見錯誤中英文對照表
fatal error C1003: error count exceeds number; stopping compilation
中文對照:錯誤太多,停止編譯
分析:修改之前的錯誤,再次編譯
fatal error C1004: unexpected end of file found
中文對照:檔案未結束 分析:一個函式或者一個結構定義缺少“}”、或者在一個函式呼叫或表示式中括號沒有配對出現、或者註釋符“/*…*/”不完整等
fatal error C1083: Cannot open include file: 'xxx': No such file or
directory 中文對照:無法開啟標頭檔案xxx:沒有這個檔案或路徑 分析:標頭檔案不存在、或者標頭檔案拼寫錯誤、或者檔案為只讀
fatal error C1903: unable to recover from previous error(s); stopping
compilation 中文對照:無法從之前的錯誤中恢復,停止編譯 分析:引起錯誤的原因很多,建議先修改之前的錯誤
error C2001: newline in constant
中文對照:常量中建立新行 分析:字串常量多行書寫
error C2006: #include expected a filename, found 'identifier'
中文對照:#include命令中需要檔名
分析:一般是標頭檔案未用一對雙引號或尖括號括起來,例如“#include stdio.h”
error C2007: #define syntax
中文對照:#define語法錯誤 分析:例如“#define”後缺少巨集名,例如“#define”
error C2008: 'xxx' : unexpected in macro definition
中文對照:巨集定義時出現了意外的xxx 分析:巨集定義時巨集名與替換串之間應有空格,例如“#define TRUE"1"”
error C2009: reuse of macro formal 'identifier'
中文對照:帶參巨集的形式引數重複使用 分析:巨集定義如有引數不能重名,例如“#define s(a,a) (a*a)”中引數a重複
error C2010:
'character' : unexpected in macro formal parameter list 中文對照:帶參巨集的參數列表現未知字元
分析:例如“#define s(r|) r*r”中引數多了一個字元‘|’
error C2014: preprocessor command must start as first nonwhite space
中文對照:預處理命令前面只允許空格
分析:每一條預處理命令都應獨佔一行,不應出現其他非空格字元
error C2015: too many characters in constant
中文對照:常量中包含多個字元
分析:字元型常量的單引號中只能有一個字元,或是以
“\”開始的一個轉義字元
error C2017: illegal escape sequence
中文對照:轉義字元非法 分析:一般是轉義字元位於 ' ' 或 " " 之外,例如“char error = ' '\n;”
error C2018: unknown character '0xhh'
中文對照:未知的字元0xhh 分析:一般是輸入了中文標點符號,例如“char error = 'E';”中“;”為中文標點符號
error C2019: expected preprocessor directive, found 'character'
中文對照:期待預處理命令,但有無效字元
分析:一般是預處理命令的#號後誤輸入其他無效字元,例如“#!define TRUE 1”
error C2021: expected exponent value, not 'character'
中文對照:期待指數值,不能是字元 分析:一般是浮點數的指數表示形式有誤,例如123.456E
error C2039: 'identifier1' : is not a member of 'idenifier2'
中文對照:識別符號1不是識別符號的成員
分析:程式錯誤地呼叫或引用結構體、共用體、類的成員
error C2048: more than one default
中文對照:default語句多於一個 分析:switch語句中只能有一個default,刪去多餘的default
error C2050: switch expression not integral
中文對照:switch表示式不是整型的 分析:switch表示式必須是整型(或字元型),例如“switch ("a")”中表示式為字串,這是非法的
error C2051: case expression not constant
中文對照:case表示式不是常量 分析:case表示式應為常量表示式,例如“case "a"”中“"a"”為字串,這是非法的
error C2052: 'type' : illegal type for case expression
中文對照:case表示式型別非法 分析:case表示式必須是一個整型常量(包括字元型)
error C2057: expected constant expression
中文對照:期待常量表示式 分析:一般是定義陣列時陣列長度為變數,例如“int n=10; int a;”中n為變數,是非法的
error C2058: constant expression is not integral
中文對照:常量表示式不是整數 分析:一般是定義陣列時陣列長度不是整型常量
error C2059: syntax error : 'xxx'
中文對照:‘xxx’語法錯誤 分析:引起錯誤的原因很多,可能多加或少加了符號xxx
error C2064: term does not evaluate to a function
中文對照:無法識別函式語言 分析:1、函式引數有誤,表示式可能不正確,例如“sqrt(s(s-a)(s-b)(s-c));”中表示式不正確
2、變數與函式重名或該識別符號不是函式,例如“int i,j; j=i();”中i不是函式
error C2065: 'xxx' : undeclared identifier
常見連線錯誤
(1) vc網路程式設計中遇到一個編譯問題,原來是少了WSOCK32.LIB。
在 project-->settings-->Link-->Object/Library modules 中加入庫WSOCK32.LIB即可。
在VC中進行WINSOCK的API程式設計開發的時候,需要在專案中使用下面三個檔案,否則會出現編譯錯誤。
1.WINSOCK.H: 這是WINSOCK API的標頭檔案,需要包含在專案中。
2.WSOCK32.LIB: WINSOCK API連線庫檔案。在使用中,一定要把它作為專案的非預設的連線庫包含到專案檔案中去。
3.WINSOCK.DLL: WINSOCK的動態連線庫,位於WINDOWS的安裝目錄下。
--------------------Configuration: Example1 - Win32 Debug--------------------
Linking...
error LNK2001: unresolved external symbol _connect@12
error LNK2001: unresolved external symbol _htons@4
error LNK2001: unresolved external symbol _inet_addr@4
error LNK2001: unresolved external symbol _socket@12
error LNK2001: unresolved external symbol _closesocket@4
error LNK2001: unresolved external symbol _send@16
error LNK2001: unresolved external symbol _recv@16
error LNK2001: unresolved external symbol _WSAAsyncSelect@16
error LNK2001: unresolved external symbol _accept@12
error LNK2001: unresolved external symbol _listen@8
error LNK2001: unresolved external symbol _bind@12
(2) vc資料庫SQL程式設計中遇到一個問題,原來是少了odbc32.lib。
在 project-->settings-->Link-->Object/Library modules 中加入庫odbc32.lib 即可。
mfc程式呼叫了odbc api,連線時出錯:
error LNK2001: unresolved external symbol _SQLConnect@28
error LNK2001: unresolved external symbol _SQLFetch@4
error LNK2001: unresolved external symbol _SQLBindCol@24
error LNK2001: unresolved external symbol _SQLFreeHandle@8
error LNK2001: unresolved external symbol _SQLExecDirect@12
error LNK2001: unresolved external symbol _SQLAllocHandle@12
error LNK2001: unresolved external symbol _SQLSetEnvAttr@16
error LNK2001: unresolved external symbol _SQLDisconnect@4
(3) vc OpenCV影像處理程式設計中遇到一個問題,原來是少了cv.lib cvaux.lib cxcore.lib highgui.lib。
在 project-->settings-->Link-->Object/Library modules 中加入庫cv.lib cvaux.lib
cxcore.lib highgui.lib 即可。
error LNK2001: unresolved external symbol _cvReleaseImage
error LNK2001: unresolved external symbol _cvWaitKey
error LNK2001: unresolved external symbol _cvDrawContours
error LNK2001: unresolved external symbol _cvReleaseMemStorage
error LNK2001: unresolved external symbol _cvDestroyWindow
error LNK2001: unresolved external symbol _cvFindContours
error LNK2001: unresolved external symbol _cvCvtColor
error LNK2001: unresolved external symbol _cvCreateImage
error LNK2001: unresolved external symbol _cvGetSize
error LNK2001: unresolved external symbol _cvShowImage
error LNK2001: unresolved external symbol _cvLoadImage
error LNK2001: unresolved external symbol _cvNamedWindow
error LNK2001: unresolved external symbol _cvCreateMemStorage
(4) vc OpenGL三維程式設計中遇到一個問題,原來是少了OpenGL32.lib GLu32.lib GLaux.lib。
在 project-->settings-->Link-->Object/Library modules 中加入庫OpenGL32.lib GLu32.lib
GLaux.lib 即可。
error LNK2001: unresolved external symbol _gluPerspective@32
error LNK2001: unresolved external symbol _gluLookAt@72
error LNK2001: unresolved external symbol __imp__glLoadIdentity@0
error LNK2001: unresolved external symbol __imp__glMatrixMode@4
error LNK2001: unresolved external symbol __imp__glViewport@16
error LNK2001: unresolved external symbol __imp__glHint@8
error LNK2001: unresolved external symbol __imp__glDepthFunc@4
error LNK2001: unresolved external symbol __imp__glEnable@4
error LNK2001: unresolved external symbol __imp__glClearDepth@8
error LNK2001: unresolved external symbol __imp__glClearColor@16
error LNK2001: unresolved external symbol __imp__glShadeModel@4
error LNK2001: unresolved external symbol __imp__glEnd@0
error LNK2001: unresolved external symbol __imp__glVertex3f@12
error LNK2001: unresolved external symbol __imp__glBegin@4
error LNK2001: unresolved external symbol __imp__glTranslatef@12
error LNK2001: unresolved external symbol __imp__glClear@4
error LNK2001: unresolved external symbol __imp__wglDeleteContext@4
error LNK2001: unresolved external symbol __imp__wglMakeCurrent@8
error LNK2001: unresolved external symbol __imp__wglCreateContext@4
(5) vc VFW視訊採集程式設計中遇到一個問題,原來是少了VFW32.Lib
在 project-->settings-->Link-->Object/Library modules 中加入庫VFW32.Lib 即可。
error LNK2001: unresolved external symbol _capCreateCaptureWindowA@32
中文對照:未定義的識別符號xxx 分析:
1、如果xxx為cout、cin、scanf、printf、sqrt等,則程式中包含標頭檔案有誤
2、未定義變數、陣列、函式原型等,注意拼寫錯誤或區分大小寫。
error C2078: too many initializers
中文對照:初始值過多 分析:一般是陣列初始化時初始值的個數大於陣列長度,例如“int b={1,2,3};”
error C2082: redefinition of formal parameter 'xxx'
中文對照:重複定義形式引數xxx 分析:函式首部中的形式引數不能在函式體
中再次被定義
error C2084: function 'xxx' already has a body
中文對照:已定義函式xxx 分析:在VC++早期版本中函式不能重名,6.0中支援函式的過載,函式名相同但引數不一樣
error C2086: 'xxx' : redefinition
中文對照:識別符號xxx重定義 分析:變數名、陣列名重名
error C2087: '<Unknown>' : missing subscript
中文對照:下標未知 分析:一般是定義二維陣列時未指定第二維的長度,例如“int a[];”
error C2100: illegal indirection
中文對照:非法的間接訪問運算子“*” 分析:對非指標變數使用“*”運算
error C2105: 'operator' needs l-value
中文對照:操作符需要左值 分析:例如“(a+b)++;”語句,“++”運算子無效
error C2106: 'operator': left operand must be l-value
中文對照:操作符的左運算元必須是左值 分析:例如“a+b=1;”語句,“=”運算子左值必須為變數,不能是表示式
error C2110: cannot add two pointers
中文對照:兩個指標量不能相加 分析:例如“int *pa,*pb,*a; a = pa + pb;”中兩個指標變數不能進行“+”運算
error C2117: 'xxx' : array bounds overflow
中文對照:陣列xxx邊界溢位 分析:一般是字元陣列初始化時字串長度大於字元陣列長度,例如“char str = "abcd";”
error C2118: negative subscript or subscript is too large
中文對照:下標為負或下標太大 分析:一般是定義陣列或引用陣列元素時下標不正確
error C2124: divide or mod by zero
中文對照:被零除或對0求餘分析:例如“int i = 1 / 0;”除數為0
error C2133: 'xxx' : unknown size
中文對照:陣列xxx長度未知 分析:一般是定義陣列時未初始化也未指定陣列長度,例如“int a[];”
error C2137: empty character constant。
中文對照:字元型常量為空 分析:一對單引號“''”中不能沒有任何字元
error C2143: syntax error : missing 'token1' before 'token2' error C2146:
syntax error : missing 'token1' before identifier 'identifier'
中文對照:在識別符號或語言符號2前漏寫語言符號1 分析:可能缺少“{”、“)”或“;”等語言符號
error C2144: syntax error : missing ')' before type 'xxx'
中文對照:在xxx型別前缺少‘)’ 分析:一般是函式呼叫時定義了實參的型別
error C2181: illegal else without matching if
中文對照:非法的沒有與if相匹配的else 分析:可能多加了“;”或複合語句沒有使用“{}”
error C2196: case value '0' already used
中文對照:case值0已使用 分析:case後常量表示式的值不能重複出現
error C2296: '%' : illegal, left operand has type 'float' error C2297: '%'
: illegal, right operand has type 'float' 中文對照:%運算的左(右)運算元型別為float,這是非法的
分析:求餘運算的物件必須均為int型別,應正確定義變數型別或使用強制型別轉換
error C2371: 'xxx' : redefinition; different basic types
中文對照:識別符號xxx重定義;基型別不同 分析:定義變數、陣列等時重名
error C2440: '=' : cannot convert from 'char ' to 'char'
中文對照:賦值運算,無法從字元陣列轉換為字元 分析:不能用字串或字元陣列對字元型資料賦值,更一般的情況,型別無法轉換
error C2447: missing function header (old-style formal list?) error C2448:
'<Unknown>' : function-style initializer appears to be a function definition
中文對照:缺少函式標題(是否是老式的形式表?) 分析:函式定義不正確,函式首部的“( )”後多了分號或者採用了老式的C語言的形參表
error C2450: switch expression of type 'xxx' is illegal
中文對照:switch表示式為非法的xxx型別 分析:switch表示式型別應為int或char
error C2466: cannot allocate an array of constant size 0
中文對照:不能分配長度為0的陣列 分析:一般是定義陣列時陣列長度為0
error C2601: 'xxx' : local function definitions are illegal
中文對照:函式xxx定義非法 分析:一般是在一個函式的函式體中定義另一個函式
error C2632: 'type1' followed by 'type2' is illegal
中文對照:型別1後緊接著型別2,這是非法的 分析:例如“int float i;”語句
error C2660: 'xxx' : function does not take n parameters
中文對照:函式xxx不能帶n個引數 分析:呼叫函式時實參個數不對,例如“sin(x,y);”
error C2676: binary '<<' : 'class istream_withassign' does not define this
operator or a conversion to a type acceptable to the predefined operator error
C2676: binary '>>' : 'class ostream_withassign' does not define this operator
or a conversion to a type acceptable to the predefined operator
分析:“>>”、“<<”運算子使用錯誤,例如“cin<<x;
cout>>y;”
error C4716: 'xxx' : must return a value
中文對照:函式xxx必須返回一個值 分析:僅當函式型別為void時,才能使用沒有返回值的返回命令。
fatal error LNK1104: cannot open file "Debug/Cpp1.exe"
中文對照:
無法開啟檔案Debug/Cpp1.exe 分析:重新編譯連結
fatal error LNK1168: cannot open Debug/Cpp1.exe for writing
中文對照:不能開啟Debug/Cpp1.exe檔案 分析:一般是Cpp1.exe還在執行,未關閉
fatal error LNK1169: one or more multiply defined symbols found
中文對照:出現一個或更多的多重定義符號。
分析:一般與error LNK2005一同出現
error LNK2001: unresolved external symbol _main
中文對照:未處理的外部標識main 分析:一般是main拼寫錯誤,例如“void mian()”
error LNK2005: _main already defined in Cpp1.obj
中文對照: main函式已經在Cpp1.obj檔案中定義 分析:未關閉上一程式的工作空間,導致出現多個main函式
warning C4067: unexpected tokens following preprocessor directive - expected
a newline 中文對照:預處理命令後出現意外的符號 - 期待新行 分析:“#include<iostream.h>;”命令後的“;”為多餘的字元
warning C4091: '' : ignored on left of 'type' when no variable is
declared中文:當沒有宣告變數時忽略型別說明 分析:語句“int ;”未定義任何變數,不影響程式執行
warning C4101: 'xxx' : unreferenced local variable
中文對照:變數xxx定義了但未使用 分析:可去掉該變數的定義,不影響程式執行
warning C4244: '=' : conversion from 'type1' to 'type2', possible loss of
data 中文對照:賦值運算,從資料型別1轉換為資料型別2,可能丟失資料
分析:需正確定義變數型別,資料型別1為float或double、資料型別2為int時,結果有可能不正確,資料型別1為double、資料型別2為float時,不影響程式結果,可忽略該警告
warning C4305: 'initializing' : truncation from 'const double' to 'float'
中文對照:初始化,擷取雙精度常量為float型別
分析:出現在對float型別變數賦值時,一般不影響最終結果
warning C4390: ';' : empty controlled statement found; is this the intent?
中文對照:‘;’控制語句為空語句,是程式的意圖嗎?分析:if語句的分支或迴圈控制語句的迴圈體為空語句,一般是多加了“;”
warning C4508: 'xxx' : function should return a value; 'void' return type
assumed 中文對照:函式xxx應有返回值,假定返回型別為void 分析:一般是未定義main函式的型別為void,不影響程式執行
warning C4552: 'operator' : operator has no effect; expected operator with
side-effect 中文對照:運算子無效果;期待副作用的操作符
分析:例如“i+j;”語句,“+”運算無意義
warning C4553: '==' : operator has no effect; did you intend '='?
中文對照:
“==”運算子無效;是否為“=”? 分析:例如
“i==j;”
語句,“==”運算無意義
warning C4700: local variable 'xxx' used without having been initialized
中文對照:變數xxx在使用前未初始化
分析:變數未賦值,結果有可能不正確,如果變數通過scanf函式賦值,則有可能漏寫“&”運算子,或變數通過cin賦值,語句有誤
warning C4715: 'xxx' : not all control paths return a value
中文對照:函式xx不是所有控制路徑都有返回值 分析:一般是在函式的if語句中包含return語句,當if語句的條件不成立時沒有返回值
warning C4723: potential divide by 0
中文對照:有可能被0除 分析:表示式值為0時不能作為除數
分類: c/c++學習
標籤: c常見錯誤