Dev C++編寫C/C++程式 出現[Error] ld returned 1 exit status報錯分析及解決

杏花疏影發表於2022-06-09

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程式碼到新檔案就解決的不明原因

第二類:在程式中出現的非智力因素的錯誤,像書寫和單詞拼寫錯誤(我就出現過單詞拼寫錯誤,好好學習英語叭

第三類:我不明所以,半夢半醒的自定義函式部分很愛出這個報錯好像,編寫自定義函式的時候細心點叭

           (這也不是我想寫好就寫好的啊


 

這些錯誤我都覺得屬於看起來很離譜,不是很好查詢原因的

這個報錯資訊也稱得上是我最頭疼的報錯之一了,多積累經驗吧,錯個遍以後就知道可能哪出錯了

歡迎大家評論區補充~

 

相關文章