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