C語言調試過程中duplicate symbol錯誤分析


    說明:在我們調試C語言的過程中,經常會遇到duplicate symbol錯誤(在Mac平台下利用Xcode集成開發環境)。如下圖:

           

    一.簡單分析一下C語言程序的開發步驟。

    

    由上圖我們可以看出C語言由編寫源程序->編譯->鏈接->運行幾個步驟進行。

    編寫源程序:

    C語言的源文件的擴展名為.c,源文件以ASCII的形式存儲,不能直接被計算機執行。

    編譯:

    1.把C語言源程序翻譯成計算機可以識別的二進制代碼,由編譯器完成。

    2.編譯的同時進行語法檢查,如果發現語法錯誤,則編譯失敗。如果編譯成功,生成擴展名為“.obj”的目標文件。

    3.每個源文件是單獨進行編譯的,如果一個項目中有多個.c源文件,則會生成多個.obj目標文件。

    鏈接:

    1.將所有有關聯的obj目標文件,及系統提供的C庫函數等組合在一起生成可執行文件。

    2.生成的可執行文件的文件名與源程序文件名形同,計算機可以直接執行。

    運行:

    雙擊即可運行生成的可執行文件。

   二.錯誤原因

      源文件中引入的另一個源文件。

      例如:在main.c中#include<test.c>

   三.錯誤分析

      由於編譯的過程是對每個源文件單獨進行編譯的,如果單個源文件沒有語法錯誤,編譯就會通過。而鏈接過程是將所有有關聯的obj目

            文件及系統的庫函數組合在一起。而include預處理指令類似與代碼的拷貝,並且C語言默認情況下不允許重復定義函數,因此引入的源文件

            中函數在鏈接時會報重復定義的錯誤。也就是我們看到的duplicate symbol錯誤。

         小伙伴們,以后要注意了,在C語言開發中,不允許在源文件中引入其他的源文件,只可以引入頭文件呦! 

      


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM