debug系列第一彈,不知道大家寫程式的時候是不是都遇到過如題的報錯。
我本人是經常遇到這行熟悉的令人不知所措的報錯,可能是我太笨了
有時候百度無果也差不到原因,那就彙總一下目前我遇到的情況吧——持續更新
出現後這個報錯資訊,大體一看找不到問題,第一類建議:
1.可以把重啟Dev C++
2.新建一個原始碼將程式碼複製貼上再執行試試
(雖然聽起來很離譜,但是我真的出現過,記得很清楚就是,在這個檔案怎麼改都這個報錯,新建一個copy過去就正常執行)
3.檔名改成英文,不要使用中文,也就是說,保證這個檔案的路徑是英文的。
因為我們的計算機處理中文的時候很容易出錯的,不如使用英文。
(這個我沒有出現過,經常網上衝浪看到有寫到這個的,朋友幫忙看這個報錯也提到了,先放在這裡叭)
程式碼中原因分析:
1.上一個執行結果未關閉(這個是最常見的)
2.printf/scanf書寫錯誤(C語言程式容易出這個問題)
3.程式沒有 main( ) 主函式
4.自定義函式出現錯誤
4.1自定義函式宣告部分書寫錯誤
特別舉例
函式宣告如下:
void delete_string(string str,string substr);//
在main函式後面的函式體:
void delete_string(string& str,string substr)//有發現不同嘛,在上面的函式宣告的引數列表中第一個字串變數漏了引用符&
{ int len = substr.length() ; int pos; while(1) { pos = str.find(substr.c_str() ,0); if(pos<0) break; str.erase(pos,len); } }
4.2宣告瞭自定義函式,卻沒寫函式體,主函式呼叫了這個沒寫完的自定義函式
4.3使用函式模板的時候,建議直接把這個函式寫在主函式前
如圖,忽略函式內容,看函式體的位置以及報錯資訊
宣告在前,函式位置後置,報錯[Error] ld returned 1 exit status
如圖,在主函式上方直接寫完整個函式,正常執行
總結:
這些錯誤往往出現在並不起眼的地方,最常見的原因我覺得分為三類,
第一類:可以靠重啟編譯器、copy程式碼到新檔案就解決的不明原因
第二類:在程式中出現的非智力因素的錯誤,像書寫和單詞拼寫錯誤(我就出現過單詞拼寫錯誤,好好學習英語叭)
第三類:我不明所以,半夢半醒的自定義函式部分很愛出這個報錯好像,編寫自定義函式的時候細心點叭
(這也不是我想寫好就寫好的啊)
這些錯誤我都覺得屬於看起來很離譜,不是很好查詢原因的
這個報錯資訊也稱得上是我最頭疼的報錯之一了,多積累經驗吧,錯個遍以後就知道可能哪出錯了
歡迎大家評論區補充~