所以,我正在使用C++。我知道如何將.h文件與.cpp鏈接(很簡單)。我遇到的問題是,我不想將所有的代碼寫入一個.cpp文件,這使得它太大,組織變成了一個喧囂。在其他語言(c#和python)中,我能夠在另一個文件中編寫一個類,然後從它中派生孩子,就像C++中的頭文件一樣,但.h文件僅用於聲明函數,.cpp是所有內容正在編碼。因此,沒有一個大的.cpp文件,我可以將它編碼到多個.cpp文件中嗎?是否有可能在一個項目(souce文件夾)中有超過1個.cpp文件?如果是的話.cpp文件如何通信?
回答
當然。你有一個頭文件和相關的聲明,然後你可以有多個源文件來實現它們。你只需要確保它們都鏈接在一起。
這是可能的,因爲當你將它們連接在一起時,定義來自哪個翻譯單元並不重要,唯一重要的是它們存在。如果您在相同的翻譯單元中全部使用它們,則不會有任何區別。
它應該是這樣的:
// header.h
// guards...
void func1();
void func2();
// source1.cpp
#include "header.h"
void func1() {}
// source2.cpp
#include "header.h"
void func2() {}
我猜OP的真正問題在編譯時開始 – user463035818
因此,它們的鏈接器是.h文件,我不必#include或#using或任何東西?例如,我將在source2.cpp中編寫代碼並完成該函數,然後在source1(main source)上調用.h文件,這會繼承我在source2中編寫的函數? –
@MohammadRahman沒有「函數繼承」這樣的東西。如果你包含'header.h',你可以使用在它們聲明的函數,只要它們有一個定義,在編譯之後所有的東西都被鏈接器*解析。你也不應該鏈接頭文件,只有源文件 – Rakete1111
- 1. 是否有可能從IOS項目中的cpp文件獲取文件路徑
- 2. 是否有可能將信息從xml文件轉換爲cpp
- 3. 是否有可能在另一個.cpp或.h文件中捕獲異常?
- 4. Arduino和cpp文件通信
- 5. 是否有可能有兩個.html文件,使一個文件
- 6. 從另一個.cpp文件的主體編譯.cpp文件
- 7. 如何在只有一個cpp文件中使用QPainter?
- 8. 如何在項目(類)中使用兩個.cpp文件?
- 9. 是否有可能從一個文件
- 10. 一個.cpp文件中的多個類
- 11. 如何檢測項目文件夾中是否存在文件?
- 12. 在.cpp文件
- 13. 在一個項目中調試一些cpp文件(VS2015)
- 14. 根文件夾中是否可以有多個Web.Config文件
- 15. 帶有多個cpp文件的Xcode項目
- 16. Python - 通過閱讀csv文件創建多個文件夾,並檢查文件夾是否已經存在,如果沒有創建一個新文件夾
- 17. 如何返回cpp文件的目錄?
- 18. 如何檢查文件夾中是否至少有一個文件在php
- 19. 我如何在cpp可執行文件中嵌入licence.licx文件?
- 20. 是否可以將宏定義應用於單個cpp文件?
- 21. 如何檢查我的文件夾中是否至少有一個文件* .bak?
- 22. 爲什麼.o文件是爲每個.cpp文件創建的
- 23. 是否可以在沒有dsw文件的情況下在vC++中運行項目。我只有所有cpp和h文件,但沒有其他支持文件
- 24. Makefile爲一個.o文件和一個.CPP文件的C++
- 25. CUDA * .cpp文件
- 26. 是否有可能通過logparser獲取文件夾大小?
- 27. 的Visual C++ 2010重建項目中的所有文件,即使只有一個.cpp文件中被改變
- 28. stdin從一個文件在開發cpp
- 29. 訪問在另一個.cpp文件
- 30. 如何從一個.cpp源文件中鏈接功能,該文件也有一個'main'?
幾乎所有的C++項目由多個的.cpp和多個.h文件中。 –
小心使用語言。 「鏈接」在C和C++的上下文中有着非常特殊的含義。我不認爲你理解鏈接(或者你不會問這個問題)。相反地說,你知道如何將.h文件包含到.cpp文件中。 – RPGillespie
http://www.cprogramming.com/compilingandlinking.html – RPGillespie