2017-07-25 123 views
-4

所以,我正在使用C++。我知道如何將.h文件與.cpp鏈接(很簡單)。我遇到的問題是,我不想將所有的代碼寫入一個.cpp文件,這使得它太大,組織變成了一個喧囂。在其他語言(c#和python)中,我能夠在另一個文件中編寫一個類,然後從它中派生孩子,就像C++中的頭文件一樣,但.h文件僅用於聲明函數,.cpp是所有內容正在編碼。因此,沒有一個大的.cpp文件,我可以將它編碼到多個.cpp文件中嗎?是否有可能在一個項目(souce文件夾)中有超過1個.cpp文件?如果是的話.cpp文件如何通信?

+8

幾乎所有的C++項目由多個的.cpp和多個.h文件中。 –

+2

小心使用語言。 「鏈接」在C和C++的上下文中有着非常特殊的含義。我不認爲你理解鏈接(或者你不會問這個問題)。相反地​​說,你知道如何將.h文件包含到.cpp文件中。 – RPGillespie

+0

http://www.cprogramming.com/compilingandlinking.html – RPGillespie

回答

2

當然。你有一個頭文件和相關的聲明,然後你可以有多個源文件來實現它們。你只需要確保它們都鏈接在一起。

這是可能的,因爲當你將它們連接在一起時,定義來自哪個翻譯單元並不重要,唯一重要的是它們存在。如果您在相同的翻譯單元中全部使用它們,則不會有任何區別。

它應該是這樣的:

// header.h 
// guards... 
void func1(); 
void func2(); 

// source1.cpp 
#include "header.h" 
void func1() {} 

// source2.cpp 
#include "header.h" 
void func2() {} 
+0

我猜OP的真正問題在編譯時開始 – user463035818

+0

因此,它們的鏈接器是.h文件,我不必#include或#using或任何東西?例如,我將在source2.cpp中編寫代碼並完成該函數,然後在source1(main source)上調用.h文件,這會繼承我在source2中編寫的函數? –

+1

@MohammadRahman沒有「函數繼承」這樣的東西。如果你包含'header.h',你可以使用在它們聲明的函數,只要它們有一個定義,在編譯之後所有的東西都被鏈接器*解析。你也不應該鏈接頭文件,只有源文件 – Rakete1111

相關問題