c语言调试过程中的错误,C语言调试过程中duplicate symbol错误分析
說明:在我們調(diào)試C語言的過程中,經(jīng)常會遇到duplicate symbol錯誤(在Mac平臺下利用Xcode集成開發(fā)環(huán)境)。如下圖:
一.簡單分析一下C語言程序的開發(fā)步驟。
由上圖我們可以看出C語言由編寫源程序->編譯->鏈接->運行幾個步驟進行。
編寫源程序:
C語言的源文件的擴展名為.c,源文件以ASCII的形式存儲,不能直接被計算機執(zhí)行。
編譯:
1.把C語言源程序翻譯成計算機可以識別的二進制代碼,由編譯器完成。
2.編譯的同時進行語法檢查,如果發(fā)現(xiàn)語法錯誤,則編譯失敗。如果編譯成功,生成擴展名為“.obj”的目標文件。
3.每個源文件是單獨進行編譯的,如果一個項目中有多個.c源文件,則會生成多個.obj目標文件。
鏈接:
1.將所有有關(guān)聯(lián)的obj目標文件,及系統(tǒng)提供的C庫函數(shù)等組合在一起生成可執(zhí)行文件。
2.生成的可執(zhí)行文件的文件名與源程序文件名形同,計算機可以直接執(zhí)行。
運行:
雙擊即可運行生成的可執(zhí)行文件。
二.錯誤原因
源文件中引入的另一個源文件。
例如:在main.c中#include
三.錯誤分析
由于編譯的過程是對每個源文件單獨進行編譯的,如果單個源文件沒有語法錯誤,編譯就會通過。而鏈接過程是將所有有關(guān)聯(lián)的obj目
文件及系統(tǒng)的庫函數(shù)組合在一起。而include預處理指令類似與代碼的拷貝,并且C語言默認情況下不允許重復定義函數(shù),因此引入的源文件
中函數(shù)在鏈接時會報重復定義的錯誤。也就是我們看到的duplicate symbol錯誤。
小伙伴們,以后要注意了,在C語言開發(fā)中,不允許在源文件中引入其他的源文件,只可以引入頭文件呦!
關(guān)于火狐瀏覽器在開發(fā)調(diào)試過程中,出現(xiàn)javascript:void(0)的狀態(tài)
關(guān)于火狐瀏覽器在開發(fā)調(diào)試過程中,出現(xiàn)javascript:void(0)的狀態(tài) 由于火狐瀏覽器沒有安裝 Adobe Flash Player 19 NPAPI這個插件 安裝好了之后就可以直接運行了
Android APP 調(diào)試過程中遇到的問題。
調(diào)試過過程中APP安裝完啟動后有的時候會異常退出,報這個錯誤.有的時候可以直接啟動.查找不到原因.網(wǎng)上說把commit方法替換成commitAllowingStateLoss() 也無效. Andro ...
調(diào)試過程中發(fā)現(xiàn)按f5無法走進jdk源碼
debug 模式 ,在fis=new FileInputStream(file); 行打斷點 調(diào)試過程中發(fā)現(xiàn)按f5無法走進jdk源碼 package com.lzl.spring.test; impo ...
【轉(zhuǎn)】MFC中調(diào)試過程中查看輸出信息 -- 不錯
原文網(wǎng)址:http://blog.sina.com.cn/s/blog_4e24d9c501014o39.html 筆記&&方便查閱. ~~~~~~~~~~~~~~~~~~~~~~~~ ...
Android Studio 調(diào)試過程中快捷查看斷點處變量值(Ctrl+Shift+I無效)?
當你在做Keymap到Eclipse后,在debug過程中,在Eclipse中我們很喜歡用Ctrl+Shift+I去查看一個運算或者調(diào)用的結(jié)果,這樣用起來很方便.但是keymap到Eclipse后,你 ...
[ISE調(diào)試] 在ISE調(diào)試過程中,遇到過的warning以及消除辦法
1.在generate的過程中,在Map環(huán)節(jié)遇到了下面這個warning 意思:告訴你是黑盒子,而且他本來在設(shè)計里面就是黑盒子. 解決辦法:點擊圖中的,會彈出一個代碼文件,是聲明這個IP核的文件,代碼 ...
代碼調(diào)試過程中easy遇到的問題
前兩天身體有些不舒服,也沒寫啥新文章,昨天下了一天的雨.今天陽光明媚,空氣也非常新奇.心情大好. 繼翻譯為什么輸出是String而不是Object,今天先寫一下調(diào)試方面的東西.java中自帶的函數(shù)調(diào)試 ...
IIC通信控制的AD5259------在調(diào)試過程中遇到的奇葩問題
首先說一下的遇到的問題: 1.AD5259按照SCL是100KHz的情況下,可以正常接收上位機的數(shù)據(jù),但是一段時間后,就不能正確的按照時序來走了 原因在于AD5259在接收到上位機的數(shù)據(jù)后需要一定的響 ...
YARN調(diào)試過程中的常見問題
執(zhí)行操作: hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.0.jar wordcount? /user/today/i ...
隨機推薦
Java內(nèi)存模型深度解讀
Java內(nèi)存模型規(guī)范了Java虛擬機與計算機內(nèi)存是如何協(xié)同工作的.Java虛擬機是一個完整的計算機的一個模型,因此這個模型自然也包含一個內(nèi)存模型——又稱為Java內(nèi)存模型. 如果你想設(shè)計表現(xiàn)良好的并發(fā) ...
Scala學習 —— 元組&;映射
再說集合之前,我們先來回顧一下映射&元祖 映射是鍵/值對偶的集合,Scala有一個通用的叫法--元組,也就是n個對象的聚集,并不一定要相同類型的.對偶不過是一個n=2的元祖.元祖對于那種需要將 ...
使用elk+redis搭建nginx日志分析平臺
elk+redis 搭建nginx日志分析平臺 logstash,elasticsearch,kibana 怎么進行nginx的日志分析呢?首先,架構(gòu)方面,nginx是有日志文件的,它的每個請求的狀態(tài) ...
[MODX] 1. Template *
After uploading javascript, css and images to the assets folder. We try to use Template to customize ...
iOS 在viewController中監(jiān)聽Home鍵觸發(fā)以及重新進入界面的方法
第一步:創(chuàng)建2個NSNotificationCenter監(jiān)聽 [[NSNotificationCenter defaultCenter] addObserver:self selector:@sele ...
javascript的模塊開發(fā)方法;
總結(jié)
以上是生活随笔為你收集整理的c语言调试过程中的错误,C语言调试过程中duplicate symbol错误分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三星android 7.0 root,三
- 下一篇: 阿里旗下的咸鱼是什么盈利模式?很多人真的