Ⅰ 關於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 在尋找預編譯頭文件時文件意外結束,編譯不正常終止可能造成這種情況
Ⅱ 10. VB程序中可能出現的三類錯誤是 10 。 ① 編譯錯誤 ② 語法錯誤
我說下。首先,題目本身是錯誤的。應該說:VB程序中可能出現兩類錯誤:語法錯誤和邏輯錯誤。
所謂邏輯錯誤,就是在編輯,編譯和運行時都正常,但得不出正確結果。這樣的錯誤通常是邏輯錯誤。
語法錯誤分為三種:1。編輯時的語法錯誤:主要是書寫錯誤,如關鍵字拼寫錯誤,使用了圓角標點符號等。這類錯誤在編輯時就可以自動查出。2。編譯時語法錯誤:是程序在進入編譯階段時才被發現的錯誤。通常是使用了未定義的方法或數據成員,缺少配對的關鍵字等。3。運行時語法錯誤。在程序運行才能被發現的錯誤,如數據類型不匹配,試圖打開一個並不存在的文件等。
回答如上。希望對你有所幫助。朋友。
Ⅲ C++,編譯過程中,編譯和連接時分別檢查的是什麼錯誤(如語法……)
編譯的時候檢查語言錯誤,包括關鍵字對應的語義邏輯,括弧匹配,變數和函數存在定義或聲明等
鏈接的時候,就要真正把需要調用的各種變數和函數的二進制代碼匹配起來,比如你使用了某個變數,你使用之前聲明為外部定義,而實際上你沒有給出過實際定義,這是就會報錯了。這是所有可執行代碼檢測的過程。之前編譯是每個文件單獨變數,生成obj文件。
Ⅳ 編譯的時候能發現哪些錯誤
詞法分析階段能夠檢測出輸入中不能形成源語言任何記號的錯誤字元串。語法分析階段可以確定記號流中違反源語言結構(語法)規則的錯誤。語義分析階段試圖檢測出具有正確語法結構但對操作無意義的部分。例如,我們試圖將兩個標識符相加,其中一個標識符是數組名,而另一個標識符卻是過程名。(編譯原理-龍書原話)。其他錯誤例如演算法錯誤編譯程序檢測不出。
Ⅳ 你的程序編譯後報錯為「標識符未定義」,這是編譯程序哪個階段的
「標識符未定義」通常是編譯器在編譯程序的鏈接階段報出的錯誤。在編譯程序時,編譯器會將程序源代碼轉換為目標代碼,然後將目標代碼鏈接成可執行文件。在鏈接階段橡羨,編譯器會檢查程序中使用的函數、變數等標識符是否已經胡鎮定義,如果沒有定義,就會報出「標識符未定義」的錯誤。這通常是因為程序中使用了未聲明或未定義的函數、變數等標識符,或者是因為程序中的某個模塊沒有被正確鏈接導致的。要解決這個問題,需要檢查程序中使用的所有標識符是否已經聲明或定義,褲如粗並確保所有模塊都被正確鏈接。
Ⅵ C語言預處理編譯鏈接各個階段錯誤,分階段的說一下
預處理階段主要是處理宏指令,像什麼#include指令、#define指令還有條件編譯指令等。
編譯階段主要是檢查C語言程序的語法錯誤,即編寫的代碼是否符合C語言規則,編譯是以.c源文件為單位編譯成.obj文件(或者是.o文件)。
鏈接階段,就是把相關的.obj文件、所需的庫文件等組合成一個可執行的文件。如果缺少相關所需文件,就會鏈接報錯。
指針異常,數組下標越界這些錯誤屬於語義錯誤,這個只能在執行的時候才能發現問題,這些也叫運行時錯誤。
Ⅶ 對負數開平方是錯的,請問報錯將發生在編譯什麼階段
出現在編譯階段和運行階段
C語言是一門編譯型桐蔽的語言,所以它在運行前需要進行編譯,那麼它報錯也就可能出現在編譯階段和運行階段。編譯階段的錯誤是語法錯誤,悄宏比如少寫分號,括弧不配對等,而運行時的錯誤則是一種異常,比如內存溢出、除數為0等情況。希望以上局運州回答可以幫助到您。
Ⅷ 在使用高級語言編程時,首先可通過編譯程序發現源程序的什麼錯誤
語法錯誤。
編譯過程 是對本文件操作。發現的就是本文件的語法錯誤。
Ⅸ 編譯程序可發現源程序全部的什麽錯誤和部分的什麽錯誤
編譯程序可發現源程序全部的「語法」錯誤和部分的「語義」錯誤。
特意找了詳細解釋幫你理解:用戶編寫的源程序不可避免的會有一些錯誤,這些錯誤大致可以分為靜態錯誤和動態錯誤。動態錯誤也稱動態語義錯誤,它們發生在程序運行時,例如除數為0、引用數組元素下標錯誤等。靜態錯誤是之編譯階段發現的程序錯誤,可分為語法錯誤和靜態語義錯誤,如單詞拼寫錯誤、標點符號錯誤、表達式缺少操作數、括弧不匹配等有關語言結構上的錯誤稱為語法錯誤,而語義分析時發現的運算符與運算對象不合法等錯誤屬於靜態語義錯誤。語義分析階段主要檢查源程序是否包含靜態語義錯誤,而一般的編譯器很難檢查出動態語義錯誤。
Ⅹ 編譯stdio.h時,會出現錯誤,搞不懂什麼原因
1 編譯階段,執行的是對單個文件的轉換,茄鉛從源代頃納沖碼轉換成二進制文件。
2 鏈接階段,將每個源雀殲文件轉成的二進制文件,及相關的系統庫文件共同打包生成可執行文件。
3 從定義上可以看出,鏈接階段,出現錯誤有兩種可能:
1) 函數中引用了不存在的函數。
2) 編譯環境有問題,導致ld出錯。