2011-05-13 36 views
1

我剛開始用Dev C++學習C++作爲我的IDE。我正在使用的教程中有一個關於編譯由多個文件組成的程序的頁面。這很簡單,我有一個帶有函數的文件,另一個文件具有所有其他需要的代碼來調用函數並輸出結果。問題是教程沒有告訴我如何加入這些文件,所以我可以編譯程序並使其工作。似乎有多種方法可以做到這一點,我希望他們都可以,但我現在主要是尋找最簡單的方法。編譯一個包含多個文件的程序

我還應該提到,我是新手,所以請儘量讓您的解釋簡單易懂。

回答

3

一般而言,您可以在同一個目標下將兩個.cpp文件添加到您的項目中。它將自動將兩個文件添加到構建中並將它們鏈接在一起。


這就是說,開發-C++是非常,非常古老和無人維護。它幾年來沒有看到更新。我強烈建議你使用不同的IDE。有很多可供選擇,其中包括稱爲wxDev-C++ Dev-C++的分支。我實際上推薦使用Code::BlocksVisual Studio Express,它們都更現代化,並且對調試和許多其他功能有更好的支持。

+0

感謝信息。我聽說Dev-C++基本上被刪除了,但我不知道wxDev-C++是延續;我以爲有人拿起它。說實話,我真的不喜歡很多關於它的事情。 – Greener 2011-05-14 21:33:44

+0

最新評論:截至此日期(2017年),wxDev-C++本身並未在大約6年內更新(2011年最新更新;上次報告2012年錯誤)。另一方面,2年前(2015年)發佈了[Orwell的Dev-C++]的另一個分支(http://orwelldevcpp.blogspot.com/)。 – 2017-11-12 17:32:29

3

我不確定Dev-C++,但概念保持不變。所以,這裏是你如何設法讓這兩個文件一起工作

  1. 每個C++文件編譯單元 - 含義,編譯器將一個的.cpp/.CXX文件轉換成一個.OBJ /的.o文件(在Windows和Linux(或任何Unix上))
  2. 如果被稱爲目標文件的obj文件包含該特定文件中存在的類和函數的機器代碼(這裏跳過一些內部細節)
  3. 如果要訪問不同編譯單元中存在的函數,需要鏈接那兩個目標文件
    • 鏈接是確實的目標文件的鏈接
  4. 所以,你的情況是習慣了,好了,連接兩個目標文件
  5. 有一個單獨的進程(比編譯器等)的一個術語,你需要使用DEV-C++編譯器和創建獨立的目標文件
  6. 然後使用您鏈接兩個目標文件鏈接器創建最終的可執行

如果有存在於.cpp文件功能你想參考,你使用頭文件。頭文件包含函數/類聲明。 .cpp文件將具有實現。因此,在你的.cpp文件之一(比如說)A.cpp中,包含B.hpp頭文件並在B.hpp文件中使用這些函數。包含頭文件會告訴編譯器,函數聲明存在於別處,並且鏈接器將負責將所有這些引用串起來以創建最終的可執行文件。

希望這有幫助,否則,請不要猶豫,提及您正在使用的文件,我可以建議如何將兩個.cpp文件鏈接在一起。

+0

謝謝。我想出瞭如何去做,但這有助於加強我對這個過程的理解。我只是忘記了我需要轉發聲明函數,以便編譯。 – Greener 2011-05-14 21:32:01

1

你必須在你有main()函數

例如,文件的頂部使用#include預處理指令 包括其他文件:

#include "filename.h" 
... 
/* rest of code containing main function goes here */ 
... 
1
#include "path/filename.c" 

main 
{ 
... 
... 
... 
} 
+1

你可以請在這個附加一些解釋,並且可能的(給定問題的級別),使用正確的語法來聲明'main'? – LordWilmore 2018-02-08 15:07:20

+0

除了語法問題和缺乏解釋之外,具有多個文件的想法通常是單獨編譯它們。這個答案只是將它們包括在一起,這通常是一個壞主意。 – 2018-02-08 16:04:43