筆記本電腦編譯錯誤怎麼辦
『壹』 編譯器錯誤。怎麼辦
這是兩個截然不同的概念。不是叫做:編譯器錯誤,而是應該叫做:編譯錯誤。如果說真的是編譯器內部本身(例如:c語言編譯器、或者是別的各種編程語言的編譯器)出現了bug 的話,那麼任何人也沒有辦法。只有開發編譯器軟體的軟體開發人員才能夠解決這樣的問題;
如果是在你的源程序中產生的各種編譯錯誤(例如:語法錯誤、語義錯誤等),那麼你只能夠仔細地檢查、編譯、調試你的源程序了。
『貳』 程序編譯錯誤不知道是什麼原因
不能通編譯過的程序實際上還不是合法的程序,因為它不滿足C語言對於程序的基本要求。
檢查語法錯誤的第一要義:集中力量檢查系統發現的第一個錯誤,弄清並改正它。
在編譯過程中系統發現的錯誤主要有兩類:基本語法錯誤和上下文關系錯誤。這些錯誤都在表面上,可以直接看得見。也是比較容易弄清,比較容易解決的。關鍵是需要熟悉C語言的語法規定和有關上下文關系的規定,按照這些規定檢查程序正文,看看存在什麼問題。
編譯中系統發現錯誤都能指出錯誤的位置。不同系統在這方面的能力有差異,在錯誤定位的准確性方面有所不同。有的系統只能指明發現錯誤的行,有的系統還能夠指明行內位置。
一般說,系統指明的位置未必是真實錯誤出現的位置。通常情況是錯誤出現在前,而系統發現錯誤在後,因為它檢查到實際錯誤之後的某個地方,才能確認出了問題,因此報出錯誤信息。要確認第一個錯誤的原因,應該從系統指明的位置開始,在那裡檢查,並從那裡開始向前檢查。
系統的錯誤信息中都包含一段文字,說明它所認定的錯誤原因。應該仔細閱讀這段文字,通常它提供了有關錯誤的重要線索。但也應該理解,錯誤信息未必准確,有時錯誤確實存在,但系統對錯誤的解釋也可能不對。也就是說,在查找錯誤時,既要重視系統提供的錯誤信息,又不應為系統的錯誤信息所束縛。
發現了問題,要想清楚錯誤的真正原因,然後再修改。不要蠻干。在這時的最大誘惑就是想趕快改,看看錯誤會不會消失。但是蠻乾的結果常常是原來的錯誤沒有弄好,又搞出了新的錯誤。
另一個值得注意的地方:程序中的一個語法錯誤常常導致編譯系統產生許多錯誤信息。如果你改正了程序中一個或幾個錯誤,下面的弄不清楚了,那麼就應該重新編譯。改正一處常常能消去許多錯誤信息行。
解決語法錯誤
常見語法錯誤:
1)缺少語句、聲明、定義結束的分號。
2)某種括弧不配對。C語言中括弧性質的東西很多,列舉如下:
( ), [ ], { }, ' ', " ", /* */
在不同位置的括弧不配對可能引起許多不同的錯誤信息。
3)關鍵字拼寫錯誤。
較難認定的典型錯誤:
1)宏定義造成的錯誤。這種東西不能在源程序文件中直接看到,是在宏替換之後出現的。常見的能引起語法錯誤的宏定義錯誤:宏定義中有不配對的括弧,宏定義最後加了不該有的分號,……
解決上下文關系錯誤
1)變數沒有定義。產生這個問題的原因除了變數確實沒有大意外,還可能是變數的拼寫錯誤,變數的作用域問題(在不能使用某個變數的地方想去用那個變數)。
2)變數重復定義。例如在同一個作用域里用同樣名字定義了兩個變數,函數的局部變數與參數重名等。
3)函數的重復定義。可能是用同一個名字定義了兩個不同的函數。或者是寫出的函數原型在類型上與該函數的定義不相符。有時沒有原型而直接寫函數調用也可能導致這種錯誤信息,因為編譯程序在遇到函數調用而沒有看到函數原型或函數定義時,將給函數假定一個默認原型。如果後來見到的函數定義與假定不符,就會報告函數重復定義錯誤。
4)變數類型與有關運算對運算對象或者函數對參數的要求不符。例如有些運算(如 %)要求整數參數,而你用的是某種浮點數。
5)有些類型之間不能互相轉換。例如你定義了一個結構變數,而後要用它給整數賦值。系統容許的轉換包括:數值類型之間的轉換,整數和指針之間的轉換,指針之間的轉換。其餘轉換(無論是隱含的,還是寫出強制)都不允許。參見《C語言程序設計》(K&R)197-199頁。
如何看待編譯警告
當編譯程序發現程序中某個地方有疑問,可能有問題時就會給出一個警告信息。警告信息可能意味著程序中隱含的大錯誤,也可能確實沒有問題。對於警告的正確處理方式應該是:盡可能地消除之。對於編譯程序給出的每個警告都應該仔細分析,看看是否真的有問題。只有那些確實無問題的警告才能放下不管。
注意:經驗表明,警告常常意味著嚴重的隱含錯誤。
常見警告:
1)(局部自動)變數沒有初始化就使用。如果對局部指針變數出現這種情況,後果不堪設想。對於一般局部自動變數,沒有初始化就使用它的值也不會是有意義的。
2)在條件語句或循環語句的條件中寫了賦值。大部分情況是誤將 == (等於判斷)寫成 = 了。這是很常見的程序錯誤,有些編譯程序對這種情況提出警告。
『叄』 戴爾筆記本電腦開機錯誤代碼000034是啥意思
錯誤代碼出現原因有很多種:
1.在裝系統時沒有裝好;
2.電腦的有些硬體驅動沒有裝好;
3.系統的緩存不夠,太小了;
4.某些應用程序在安裝有些文件會與系統文件相互共用,一但你刪除或損壞這個程序的話,也就等於損壞了系統.計算機出現錯誤代碼大部分是以上四個情況導致的,建議你根據不同的情況進行修復!
其實,無論是什麼軟體、什麼程序,都是由程序員進行編寫的
每個程序員都希望能編寫出完美的應用程序代碼
但難免會有疏忽之處.原因有多種:
一.編譯錯誤,是由於不正確編寫代碼而產生.如非法實用或丟失關鍵字,遺漏必要的標點符號,函數調用缺參數或括弧不匹配等.其它如變數未採用強制顯式聲明等而引起的錯誤.VB通常會在代碼寫時或運行時報錯,按報錯提示查找解決.
二.運行時出錯,是指應用程序在運行其間執行非法操作或某些操作失敗,如要打開的文件沒找到,磁碟空間不夠,除發運算中除數為0等.數組下標越界是一種典型的運行時錯誤,只有在運行時才會發現.三.邏輯錯誤,語法上找不出錯誤,應用程序也能運行,但得不到到預期結果,需認真分析並藉助調試工具才能查出錯誤原因並改正.
『肆』 編譯錯誤怎麼解決
如果使用C的編譯器,應該是能編譯通過 因為C編譯器如果沒有寫明函數的返回值的話默認的函數返回值是int 如果使用C++的編譯器就編譯不過了 因為C++比C更嚴格了,不允許默認的int返回值
『伍』 C語言編譯錯誤如何解決
C語言編譯錯誤如何解決,
辦法就是逐條分析編譯錯誤提示輸出的信息,並按照提示修改,
沒有捷徑,只能一條條地把編譯出錯的地方修改掉。
建議從前往後改,因為有可能後面的錯誤都是第一條的錯誤引起的。
所以可以改完幾條就重新編譯下,看修改的地方是否通過編譯了。
如此循環,直到消除所有的錯誤。
請採納,謝謝
『陸』 編譯器錯誤怎麼解決
1、分析原因,這樣的錯誤出現一般是由於伺服器拒絕了某一項請求,常見的是寫入,所以問題在有表單輸入的網頁中更容易出現。
『柒』 筆記本電腦用VC++6.0編譯的時候總有一處錯誤
將那個報錯的obj文件刪掉,然後重新進行編譯就可以了。
『捌』 新手在學習c語言並編譯程序時編譯錯誤怎麼辦
1、確定出錯的行號
如果是一個比較好的集成編譯環境的話,一般雙擊編譯錯誤,滑鼠都會自動跳轉到該行並高亮顯示。
沒有這個功能也沒關系,編譯錯誤裡面也都會有說明某某.c,某某行出的問題
1>e:\visual studio 2005\projects\airplane\airplane\airplane.cpp(52) : error C2065: 'abc' : undeclared identifier
這個就是說明在airplane.cpp的52行有錯誤
2、多個錯誤的話,一般只處理第一個錯誤
如果一次打出很多錯誤的話,不需要每一個都處理,只處理第一個編譯錯誤,然後再次編譯。大部分的時候,都是由於第一個錯誤產生了後續很多錯誤,第一個錯誤解決之後,其他錯誤也就迎刃而解。
3、對錯誤的更改
一般就是看錯誤的編號和後續的英文說明,如上面的錯誤,錯誤編號是C2065,錯誤的解釋是'abc' : undeclared identifier,未定義的標示符,將abc定義即可。
錯誤的種類很多,一般看英文就可以解決,如果解決不了的話,推薦根據錯誤編號上網搜索一下解決方法就OK拉。
『玖』 編譯錯誤,怎麼回事
關於編譯問題,如果說是編譯錯誤發生在自己編寫源程序的過程中的話,那麼問題的原因還是比較復雜的。通常關於用戶編寫的源程序的編譯出錯問題,這是一個很復雜的問題。因為編譯錯誤有很多種。例如:語法錯誤、系統庫連接錯誤、語義錯誤、數組越界、或者內存越界等等。
通常語法錯誤是最好解決的,因為源程序的語法出錯了,連編譯這一關都通不過,並且會告訴你在哪一行出錯了,這時候是最容易調試程序的。最難調試的就是:源程序雖然編譯通過了,但是程序的運行結果卻是錯誤的,這種是最難調試的。所以說,你必須要把詳細的出錯信息寫出來,別人們才好幫助你進行分析。
『拾』 程序無法編譯通過問題,怎麼解決
關於程序無法通過編譯的問題,其錯誤類型肯定是有很多種的。根據我多年的編程調試經驗,可以給你提供以下幾種類型的錯誤,供你參考(以下以 C 語言編程經驗為例,其他編程語言的調試思路也是同理的)。
其中最容易調試的程序錯誤類型就是:
(1)、在編寫源程序過程中出現的各種語法錯誤。這種錯誤主要是由於剛剛開始學習編程,對編程語言的語句、以及語法結構還不是很清晰造成的,這種錯誤是最容易進行調試的,因為語法錯誤,編譯器連編譯都無法通過(通常會顯示出來具體是哪一行出現錯誤),這樣的話,你就可以直接到出錯的那一行進行修改源代碼了;
(2)、若是經過一段時間的上機練習,對學習編程的初始階段已經較為熟練了、且語法錯誤較少了之後,之後就會遇到更加復雜、並且難於調試的語義錯誤。例如在 C 語言中,對於如下代碼:
void main( )
{
int n ;
scanf("%d", &n) ;
if( n == 100 )
printf(" n is 100 !\n") ;
else
printf(" n is not 100 !\n") ;
}
但是若在邏輯判斷語句:if( n == 100) 中,如果誤將「==」(邏輯等於)寫成了「=」(賦值等於),那麼在 scanf("%d", &n) 語句中,無論你輸入的 n 等於多少,一旦執行 if 語句,那麼 將 100 這個數字賦給變數 n,則該邏輯表達式的值總是 1,程序的運行結果必定總是輸出:n is 100。
而該程序的實際思路是:從鍵盤輸入一個整數,如果該整數等於 100,則輸出:n is 100 !如果輸入的整數不等於 100 的話,則輸出:n is not 100 !
像這樣的邏輯錯誤(在對 C 語言源程序進行編譯時,C 語言編譯器是檢查不出來的),如果沒有豐富的程序調試經驗,程序調試起來就是非常困難的。
(3)、其它的錯誤類型例如:數組越界、非法使用了未初始化的指針變數、未對指針變數進行有效的內存分配,就向那一塊存儲區域讀寫數據,等等。這些都會造成程序崩潰,嚴重的就會造成操作系統崩潰。