1. 程式人生 > >C語言學習過程中遇到的一些問題——already define in *.obj

C語言學習過程中遇到的一些問題——already define in *.obj

建立一個控制檯程式,新建了一個主程式Main.cpp,由於工程所需函式過多,於是建立多個CPP檔案,把程式分類放進cpp檔案裡,然後在Main()函式裡用include包含進來。但是檔案組建之後出現錯誤:

error LNK2005: "void __cdecl initQueue(struct Queue *)" ([email protected]@[email protected]@@Z) already defined in Main.obj

檔案已經定義,在main函式之前用EXTERN宣告,依然提示錯誤,最後把函式移出工作區間後,重新編譯,終於順利編譯通過。

理解了編譯的機制後就知道錯誤出在哪裡了,同一個工作區間內進行編譯,包含進去的函式會在main函式裡進行一次編譯,但是函式在自己的CPP檔案裡同時也會進行一次編譯,連結後就會導致編譯出錯。

把cpp檔案移出工作區間後,函式只有包含在main函式之前的會被編譯,cpp檔案由於不在工作區間內因此則不會編譯,連結後也就沒錯所謂的重複定義。

相關推薦

C語言學習過程遇到的一些問題——already define in *.obj

建立一個控制檯程式,新建了一個主程式Main.cpp,由於工程所需函式過多,於是建立多個CPP檔案,把程式分類放進cpp檔案裡,然後在Main()函式裡用include包含進來。但是檔案組建之後出現錯誤: error LNK2005: "void __cdecl initQ

python核心編程學習過程一些記錄

ges 學習 核心編程 一些記錄 Python標準庫 NPU 保持 whereis .py 1P18.python標準庫位置(一般是string.py所在的位置,也可以whereis python找找)C:\Python27\Lib/usr/lib64/python2.6

機器學習雜記,主要記錄學習過程一些疑問和理解

一、 最近看tensorflow,試著寫 cnn 程式碼,其中的一個介面 : def conv2d(input, filter, strides, padding, use_cudnn_on_gpu=True, data_format="NHWC", dilations=[1, 1, 1,

Refresh your Java skills–面對Java學習過程一些迷茫

很多時候,我們學習Java,開始的時候覺得很容易,越到後面,內容越多,反而心煩氣躁起來,學了忘,忘了學,依然會忘,總是摸不到竅門,再看到社會上和身邊都是搞 Java 的,競爭壓力可想一般,看到 github 上人家寫的牛逼哄哄的程式,自己又什麼都不會,只會一些簡單的 De

個人總結--關於學習過程一些經驗心得分享

九月份的時候,母校校慶,我們拍了校慶的祝福,至今我還是印象深刻其中有一個環節是,回想美好的大學生活,想對現在的學弟學妹們說些啥,那天看了製作好的視訊,感覺還是很有意義,所以還想在這裡再總結一些,作為過來人的經驗,希望能夠給後來的學弟學妹們做參考:首先一些勵志語錄:要相信:1.

Mybatis學習過程一些問題

1、 異常:No enum const class org.apache.ibatis.mapping.ParameterMode.in 原因:mybatis沒有in這種parameterMode,應該為IN <update id="editMes

學習過程一些感悟

一切都是源於C++的學習...     剛開學學習C++時候,我就很好奇C++是如何處理輸入和輸出,直到今天讀到IO庫這個章節,才大致明白些。有時候想一想,自己的計算機基礎實在是太差了,很多概念理解總是會出現偏差。用我以前看到的一句話概括下就是計算機三觀不正。     我們

Laravel學習過程一些坑(持續更新)

多站點配置 在Homestead目錄下依次執行以下命令 vagrant up vagrant ssh serve blog.test /home/vagrant/code/blog/public vagrant provision vagrant reload

【小菜鳥】本人部落格,沒有任何侵權的想法,僅僅是總結了一些前輩們的經驗,做了一些小筆記發表。 在以往學習過程中,遇到太多太多的小問題,網上都有答案,只不過太多太雜,解決問題的答案也是可不可求, 總是事倍功半。特此總結出一些自己的小經驗,希望能夠幫助大家。

小菜鳥 本人部落格,沒有任何侵權的想法,僅僅是總結了一些前輩們的經驗,做了一些小筆記發表。 在以往學習過程中,遇到太多太多的小問題,網上都有答案,只不過太多太雜,解決問題的答案也是可遇不可求, 總是事倍功半。特...

C語言學習筆記 (003) - C/C++的實參和形參(轉)

變化 避免 影響 學習筆記 ++ nbsp 過去 情況 真的 今天突然看到一道關於形參和實參的題,我居然不求甚解。藐視過去在我的腦海裏只有一個參數的概念,對於形參和實參的區別還真的不知道,作為學習了幾年C++的人來說,真的深深感覺對不起自己對不起C++老師 T。T 我

一些安卓學習過程的小知識

1、今天又吃了個虧,明明線性佈局的LinearLayout,我知道是從上到下排列的,但是!!!!!!我卻沒有注意我的         第一個控制元件ListView的寬高全特麼是適應父窗體?exm??喵了個咪    &n

在不同程式語言安裝過程系統變數設定的一些問題(尤其是path相關)

        最近在學習程式設計的時候,會經常遇到環境變數設定的相關問題,環境變數這個概念對於我來說比較抽象,所以今天專門針對環境變數的一些相關問題找了找資料。把東西寫下來,以後用到的時候也能找到。 在WIN中環境變數的位置:用滑鼠右鍵單擊系統桌面上的“計算機”圖示, 從

關於C語言學習一些感想(初學者)

       C語言是一門通用計算機程式語言,廣泛應用於底層開發。C語言的設計目標是提供一種能以簡易的方式編譯、處理低階儲存器、產生少量的機器碼以及不需要任何執行環境支援便能執行的程式語言。 儘管C語言提供了許多低階處理的功能,但仍然保持著良好跨平臺的特性,以一個

C語言學習之路之陣列的一些淺見

第一次寫部落格文章,有什麼不對的地方,請勿見怪. 對函式傳遞資料的一些體會.當我們定義一個函式的時候,當引數傳遞的是陣列的時候我們初學者一般會這樣定義: 如寫一個數組遍歷列印時會這麼寫: void print(int a[10],int length){ int i=0; for(i=0;

C語言學習及應用筆記之七:C語言的回撥函式及使用方式

  我們在使用C語言實現相對複雜的軟體開發時,經常會碰到使用回撥函式的問題。但是回撥函式的理解和使用卻不是一件簡單的事,在本篇我們根據我們個人的理解和應用經驗對回撥函式做簡要的分析。 1、什麼是回撥函式   既然談到了回撥函式,首先我們就要搞清楚什麼是回撥函式。在討論回撥函式之前,我們需要說明另一個概念,

C語言學習筆記(七)---一些刷題記錄

最近在學校的oj上做了一些題目,都不是很難,今天本想統一寫一下題解但時間太晚,篇幅太長,於是先寫三道比較基礎的。這兩天被一道題卡了好久,最後在dalao的指導下改了輸入方式就過了。我們討論了好久也沒弄清楚到底是哪出了問題,有點難過,想早點休息。 學校的oj外網

學習selenium過程一些筆記

一.分層自動化測試:ui代表頁面級系統測試,service代表服務業務測試(介面測試),unit代表單元測試。Unit佔70%,service佔20%,UI佔10%。 單元測試(unit):它可以通過mock框架,模擬各種異常場景,外部依賴最少,且可以做到測試粒度到最小的一種測試方法。也因為

Git 學習過程遇到的一些坑和自己的一些理解

Git 在向遠端倉庫提交時出錯 我們看到的很多的git教程中都會先教你如何新建github倉庫,但是這裡有一個坑,就是,新建倉庫時勾選了Initialize this repository with a README,即為倉庫初始化一個README.md檔案,但是如果這樣的

C/C++程式設計學習筆記二:C語言的函式,如何使用指標交換兩個數的值,深入理解指標

 使用外部函式交換兩個變數的值,一個再簡單不過的事情,但是在C/C++中,正確實現該功能反應了你對指標和引用等重要知識的掌握程度。本文列舉了幾種常見的寫法,其中前三種是錯誤的,後兩種是正確的。第四種使

C語言學習筆記----伊能C語言學習筆記----如何在一個檔案使用另一個檔案定義的變數呢??

 我們知道,一個大的程式,會由多個c檔案構成,這些c檔案是屬於同一個程式的。  那麼,如何在一個檔案中使用另一個檔案中定義的變數呢??      解答:    C語言為了解決這個問題:引出了    全域性作用域的概念  即:  在一個檔案中定義的全域性變數,具有全域性