在編譯時會檢查出什麼錯誤
㈠ 按異常在編譯時是否被檢測來分,異常可以分成哪兩種
檢查時異常(checkException)和運行時異常(runtime Exception)
㈡ c語言源程序在編譯,鏈接,運行時,可能發生的錯誤類型有哪些
剛畢業時也是很迷茫,但是我很幸運的是我遇到了我的幸福之星,他是一個非常牛的人。其實C和C++是一個想學編程的最好的入門語言。但是如果你要走這條路的話那你可要准備做好受打擊了心裡准備了,因為這兩門語言的確是很難的,要學的的話你至少要學四到五年才能去做一些東西。它倆都是和底層打交道的,所以要考慮計算機硬體的一些東西。除此之外你還要懂好多的,不過任何事都一樣難學肯定是學出山也很牛了,是這樣的你可以看看美國微軟的程序員不就是搞底層開發的嗎?當然對這兩門語言你做到這樣就可以了。對C你只要把譚浩強《C程序設計》上的每一道題練的很熟就可以了,一定要記得只有你自己編出來才是你的,看懂的永遠也不是你的。對於C++它不是練你的編程的邏輯思維的,而是讓你有一個面向對象的思想。你要做的是不停的去思考。還有等你學完之後,可試著朝「B/S模式」開發應用發展。當然這只是我的意見。我覺的咱現在還是以掙錢為主,其他的以後再說了,你覺的呢。最後祝你學業有成!好了就給你說到此了。有問題網路見!
㈢ c++中什麼是語法錯誤,什麼是編譯錯誤
程序的錯誤主要分成三種:
編譯鏈接錯誤;
編譯鏈接錯誤又分成編譯錯和鏈接錯。
編譯錯就是普通意義上的語法錯,編譯器進行語法檢查不通過,也就是程序違背了計算機語言的語法,例如:括弧不匹配、變數名拼寫錯誤、用保留字定義變數名等;
鏈接錯是指程序通過了語法檢查,但是無法生成可執行文件,最常見的是鏈接找不到lib庫。初學者有時寫了函數的聲明,但是缺少函數的定義,此時就會出現鏈接錯。
運行錯誤;
運行錯是程序可以執行,但是在執行過程中發生異常,提前退出程序。最常見的是指針越界,打開文件失敗繼續讀取文件,總而言之是讓計算機執行一些不能執行的語句。
邏輯錯誤
邏輯錯是程序也能運行,就是結果不對,主要原因有:程序演算法本身錯誤,程序和演算法不同義等。
例如:新手經常將判斷相等的==寫成=賦值,往往就會導致邏輯錯。
你的BD(int,int); 是一句函數調用?還是一句函數聲明?
㈣ 關於C語言在編譯時常出現的錯誤有哪些
1、fatal error C1010: unexpected end of file while looking for precompiled header directive。
尋找預編譯頭文件路徑時遇到了不該遇到的文件尾。(一般是沒有#include "stdafx.h")
2、fatal error C1083: Cannot open include file: 'R…….h': No such file or directory
不能打開包含文件「R…….h」:沒有這樣的文件或目錄。
3、error C2011: 'C……': 'class' type redefinition
類「C……」重定義。
4、error C2018: unknown character '0xa3'
不認識的字元'0xa3'。(一般是漢字或中文標點符號)
5、error C2057: expected constant expression
希望是常量表達式。(一般出現在switch語句的case分支中)
6、error C2065: 'IDD_MYDIALOG' : undeclared identifier
「IDD_MYDIALOG」:未聲明過的標識符。
7、error C2082: redefinition of formal parameter 'bReset'
函數參數「bReset」在函數體中重定義。
8、error C2143: syntax error: missing ':' before '{'
句法錯誤:「{」前缺少「;」。
9、error C2146: syntax error : missing ';' before identifier 'dc'
句法錯誤:在「dc」前丟了「;」。
10、error C2196: case value '69' already used
值69已經用過。(一般出現在switch語句的case分支中)
11、error C2509: 'OnTimer' : member function not declared in 'CHelloView'
成員函數「OnTimer」沒有在「CHelloView」中聲明。
12、error C2511: 'reset': overloaded member function 'void (int)' not found in 'B'
重載的函數「void reset(int)」在類「B」中找不到。
13、error C2555: 'B::f1': overriding virtual function differs from 'A::f1' only by return type or calling convention
類B對類A中同名函數f1的重載僅根據返回值或調用約定上的區別。
14、error C2660: 'SetTimer' : function does not take 2 parameters
「SetTimer」函數不傳遞2個參數。
15、warning C4035: 'f……': no return value
「f……」的return語句沒有返回值。
16、warning C4553: '= =' : operator has no effect; did you intend '='?
沒有效果的運算符「= =」;是否改為「=」?
17、warning C4700: local variable 'bReset' used without having been initialized
局部變數「bReset」沒有初始化就使用。
18、error C4716: 'CMyApp::InitInstance' : must return a value
「CMyApp::InitInstance」函數必須返回一個值。
19、LINK : fatal error LNK1168: cannot open Debug/P1.exe for writing
連接錯誤:不能打開P1.exe文件,以改寫內容。(一般是P1.Exe還在運行,未關閉)
20、error LNK2001: unresolved external symbol "public: virtual _ _thiscall C……::~C……(void)"
連接時發現沒有實現的外部符號(變數、函數等)。
function call missing argument list 調用函數的時候沒有給參數。
member function definition looks like a ctor, but name does not match enclosing class 成員函數聲明了但沒有使用
unexpected end of file while looking for precompiled header directive 在尋找預編譯頭文件時文件意外結束,編譯不正常終止可能造成這種情況
㈤ C++,編譯過程中,編譯和連接時分別檢查的是什麼錯誤(如語法……)
編譯的時候檢查語言錯誤,包括關鍵字對應的語義邏輯,括弧匹配,變數和函數存在定義或聲明等
鏈接的時候,就要真正把需要調用的各種變數和函數的二進制代碼匹配起來,比如你使用了某個變數,你使用之前聲明為外部定義,而實際上你沒有給出過實際定義,這是就會報錯了。這是所有可執行代碼檢測的過程。之前編譯是每個文件單獨變數,生成obj文件。
㈥ c程序進行編譯的過程中,可發現注釋中的拼寫錯誤
c程序進行編譯的過程中,是不可以發現注釋中的拼寫錯誤的。注釋中的拼寫錯誤只可能通過人工檢查發現。
因為C語言編譯時,不檢查注釋的內容。
㈦ 編譯的時候能發現哪些錯誤
詞法分析階段能夠檢測出輸入中不能形成源州銀語言任何記號的錯誤字元串。語法分析階段可以確簡扮定記號流中違反源語言結構(語法)規則的錯誤。語義分析階段試圖檢測出具有正確語法結構但對操作無意義的部分。例如,我們試圖將兩個標識符相加,其中冊咐宴一個標識符是數組名,而另一個標識符卻是過程名。(編譯原理-龍書原話)。其他錯誤例如演算法錯誤編譯程序檢測不出。
㈧ 編譯程序可發現源程序全部的什麽錯誤和部分的什麽錯誤
編譯程序可發現源程序全部的「語法」錯誤和部分的「語義」錯誤。
特意找了詳細解釋幫你理解:用戶編寫的源程序不可避免的會有一些錯誤,這些錯誤大致可以分為靜態錯誤和動態錯誤。動態錯誤也稱動態語義錯誤,它們發生在程序運行時,例如除數為0、引用數組元素下標錯誤等。靜態錯誤是之編譯階段發現的程序錯誤,可分為語法錯誤和靜態語義錯誤,如單詞拼寫錯誤、標點符號錯誤、表達式缺少操作數、括弧不匹配等有關語言結構上的錯誤稱為語法錯誤,而語義分析時發現的運算符與運算對象不合法等錯誤屬於靜態語義錯誤。語義分析階段主要檢查源程序是否包含靜態語義錯誤,而一般的編譯器很難檢查出動態語義錯誤。
㈨ 2、 在VB中設計程序時,能自動被檢查出來的錯誤是什麼
VB中的錯誤共分為3種,分別是語法錯誤、邏輯錯誤和自定義錯誤。語法錯誤是指輸入的語句不符合VB語法規則,如將if錯輸成fi等等。這類錯誤在編譯時系統會自動檢測出來,並提示錯誤發生的位置等信息,所行緩扮以這種錯誤又稱編譯期錯誤。邏輯錯誤是指我們輸入的語法符合VB語法規則,但程序達不到我們要求的功能。例如我們編寫了一個加法程序,運行後卻發現程序不能完成兩數相加的功能。這類程序由於語法正確,而是程序邏輯上存在錯誤,檔灶因此系統不會提示任何信息,必須通過自己調試來發現錯誤。自定義錯誤則是我們自己定義的一種錯誤類哪卜型。
㈩ C語言編程時 都有什麼樣的錯誤提示
Ambiguous operators need parentheses
不明確的運算,需要用括弧括起來
Ambiguous symbol 'xxx'
不明確的符號
Argument list syntax error
參數表語法錯誤
Array bounds missing
丟失數組界限符
Array size too large
數組尺寸太大
Bad character in parameters
參數中有不適當的字元
Bad file name format in include directive
包含命令中文件名格式不正確
Bad ifdef directive syntax
編譯預處理ifdef有語法錯誤
Bad ifndef directive syntax
編譯預處理ifndef有語法錯誤
Bad undef directive syntax
編譯預處理undef有語法錯誤
Call of non-function
調用未定義的函數
Call to function with no prototype
調用函數時沒有函數的說明
Cannot modify a const object
不允許修改常量對象
Case outside of switch
Case 出現在 switch 之外
Case statement missing
漏掉了 Case 語句
Case syntax error
Case 語法錯誤
Case outside of switch
Case 出現在 switch 之外
Case statement missing
漏掉了 Case 語句
Case syntax error
Case 語法錯誤
Code has no effect
代碼不可能執行到
Compound statement missing }
復合語句漏掉了"}"
Conflicting type modifiers
不明確的類型說明符
Constant expression required
要求常量表達式
Constant out of range in comparison
在比較中常量超出范圍
Conversion may lose significant digits
轉換時會掉失有意義的數字
Conversion of near pointer not allowed
不允許轉換返指針
Could not find file 'xxx'
找不到xxx文件
Declaration missing ;
說明缺少分號";"
Declaration syntax error
說明中出現語法錯誤
Default outside of switch
default出現在switch語句之外
Define directive needs an identifier
定義編譯預處理需要標識符
Division by zero
用零作除數
Do statement must have while
do-while語句中缺少while部分
Enum syntax error
枚舉類型語法錯誤
Enumeration constant syntax error
枚舉常數語法錯誤
Error directive: xxx
錯誤的編譯預處理命令
Error writing output file
寫輸出文件錯誤
Expression syntax error
表達式語法錯誤
Extra parameter in call
調用時出現多餘錯誤
File name too long
文件名太長
Function call missing )
函數調用缺少右括弧
Function definition out of place
函數定義位置錯誤
Function should return a value
函數返回一個值
Goto statement missing label
goto 語句沒有標號
Hexadecimal or octal constant too large
16進制或8進制常數太大
Illegal character 'x'
非法字 x
Illegal initialization
非法的初始化
Illegal octal digit
非法的8進制數字
Illegal pointer subtraction
非法的指針相減
Illegal structure operation
非法的結構體操作
Illegal use of pointer
指針使用非法
Improper use of a typedef symbol
類型符號定義使用不恰當
In-line assembly not allowed
不允許使用行間匯編
Incompatible storage class
存儲類別不相容
Incompatible type conversion
不相容的類型轉換
Incorrect number format
錯誤的數據格式
Incorrect use of default
default使用不正確
Invalid indirection
無效的間接運算
Invalid pointer addition
指針相加無效
Irrecible expression tree
無法執行的表達式運算
Lvalur required
需要邏輯值(0或非0值)
Macro argument syntax error
宏參數語法錯誤
Macro expansion too long
宏的擴展以後太長
Mismatched number of parameters in definition
定義中參數個數不匹配
Misplaced break
此處不應出現break語句
Misplaced continue
此處不應出現continue語句
Misplaced decimal point
此處不應出現小數點
Misplaced elif directive
此處不應出現編譯預處理elif
Misplaced else
此處不應出現else
Misplaced else directive
此處不應出現編譯預處理 else
Misplaced endif directive
此處不應出現編譯預處理 endif
Must be addressable
必須是可以編址的
Must take address of memory location
必須存儲定位的地址
No declaration for function 'xxx'
沒有函數 xxx 的說明
No stack
缺少堆棧
No type information
沒有類型信息
Non-portable pointer assignment
不可移動的指針(地址常數)賦值
Non-portable pointer comparison
不可移動的指針(地址常數)比較
Non-portable pointer conversion
不可移動的指針(地址常數)轉換
Not a valid expression format type
不合法的表達式格式
Not an allowed type
不允許使用的類型
Numeric constant too large
數值常數太大
Out of memory
內存不夠用
Parameter 'xxx' is never used
參數 xxx 沒有用到
Pointer required on left side of ->
-> 符號的左邊必須是指針
Possible use of 'xxx' before definition
在定義之前就使用了 xxx(警告)
Possibly incorrect assignment
賦值可能不正確
Redefinition of 'xxx' is not identical
xxx 的兩次定義不一致
Register allocation failure
寄存器定址失敗
Repeat count needs an lvalue
重復計數需要邏輯值
Size of structure or array not known
結構體或數組的大小不確定
Statement missing ;
語句後缺少";"
Structure or union syntax error
結構體或聯合體語法錯誤
Structure size too large
結構體的尺寸太大
Subscripting missing ]
下標缺少右方括弧
Superfluous &with function or array
函數或數組中有多餘的"&"
Suspicious pointer conversion
可疑的指針轉換
Symbol limit exceeded
符號超限
Too few parameters in call
函數調用時的實參少於函數的參數
Too many error or warning messages
錯誤或警告信息太多
Too much auto memory in function
函數中用到的局部存儲太多
Too much global data defined in file
文件中全局數據太多
Too consecutive dots
兩個連續的句點
Type mismatch in parameter xxx
參數xxx類型不匹配
Type mismatch in redeclaration of 'xxx'
xxx 重定義時的類型不匹配
Unable to create output file 'xxx'
無法建立輸出文件 xxx
Unable to open include file 'xxx'
無法打開被包容的文件 xxx
Bit field too large
位欄位太長
Unable to open input file 'xxx'
無法打開輸入文件 xxx
Undefined label 'xxx'
沒有定義的標號 xxx
Undefined structure 'xxx'
沒有定義的結構 xxx
Undefined symbol 'xxx'
沒有定義的符號 xxx
Unexpected end of file in comment started on line xxx
從 xxx 行開始的註解尚未結束,文件不能結束
Unexpected end of file in conditional started on line xxx
從 xxx 行開始的條件語句尚未結束,文件不能結束
Unknown assembler instruction
未知的匯編結構
Unknown option
未知的操作
Unknown preprocessor directive: 'xxx'
不認識的預處理命令 xxx
Unreachable code
無法到達的代碼
Unterminated string or character constant
字元串缺少引號
User break
用戶強行中斷了程序
Void functions may not return a value
void 類型的函數不應有返回值
Wrong number off arguments
調用函數時參數數目錯
'xxx' not an argument
xxx 不是參數
'xxx' not part of structure
xxx 不是結構體的一部分
xxx statement missing (
xxx 語句缺少左括弧
xxx statement missing )
xxx 語句缺少右括弧
xxx statement missing ;
xxx 語句缺少分號
'xxx' declared but never used
說明了 xxx ,但沒有使用
'xxx' is assigned a value which is never used
給 xxx 賦了值,但未用過
Zero length structure
結構體的長度為零