我有一個關於#include iosteam和向量的問題?在main.cpp,header.h或者memberfunction.cpp中?似乎我需要在main.cpp中使用命名空間標準,但#include < functional>在頭文件>中。有沒有強大的方法來做到這一點?謝謝!C++頭文件和包括
回答
簡單規則:
僅將頭文件包含在需要它的文件中。
如果您的源文件或頭文件沒有使用在頭文件中定義/聲明的任何構造,那麼就不需要包含該頭文件。這樣做只會將不必要的代碼帶入這些翻譯單元,從而破壞名稱空間並可能增加編譯時間。
爲了便於閱讀,您只希望在使用它們的翻譯單元中包含標題。所以,在所有std::vector
模板,你不會#include <vector>
不使用的源代碼,所以你乾脆把包含在你自己的#include "myheader.h"
但是,您可能希望通過編譯前的頭以減少編譯時間。 正如我解釋in this answer,只有當你的所有程序都有一個包含所有包含的單一標題時,使用GCC預編譯的標題纔有效。出於這個原因,你會希望有一個單獨的myheader.h
,它本身包括<vector>
(即使是少數不使用它的編譯單元)。
頭文件的預編譯是編譯器(也許是系統)特定的。
如果您在header.h
(例如,該類型的參數等)中以任何方式使用矢量或輸入/輸出流,則最好在其中包含iostream
和/或vector
。如果您僅在memberfunction.cpp
的內部使用它們,請將其包含在其中(對代碼的其餘部分無用)。
實際上,'iostream'完全是輸入或輸出流參數的錯誤頭。它只是定義了'std :: cout'等。流類型本身在'
- 1. 包括頭文件C++
- 2. make文件:頭包括另一頭C++
- 3. 包括頭文件
- 4. 陰謀不包括C頭文件
- 5. 包括對方的C++頭文件
- 6. 回合包括頭文件使用C
- 7. C++頭文件包括組織
- 8. C:包括源文件,而不是頭
- 9. PHP - 處理POST和頭文件包括
- 10. 圓C++頭包括
- 11. 圓C++頭包括
- 12. 包括模板頭文件
- 13. 混淆,包括頭文件
- 14. 包括DDK頭文件
- 15. 包括C/C++頭4
- 16. 包括頭部(STL)頭文件
- 17. C++什麼是頭文件包括使用CP_UTF8和調用WideCharToMultiByte
- 18. 自定義頭文件和庫包括[C++]
- 19. 基類包括.cpp文件頭文件
- 20. 在附加頭文件中包含頭文件包括路徑
- 21. C++靜態庫依賴項,頭包括頭文件
- 22. Eclipse C++包括來自我的源文件夾的頭文件
- 23. 包含C頭文件包含標準包含(不包括C++ 11)
- 24. C++ LNK2019當包括頭
- 25. C++包括插頭問題
- 26. HOWTO:條件包括頭文件
- 27. 製作和C++文件, 「包括」 在CPP
- 28. C++ - #包括「文件名」
- 29. 聽不懂,包括頭文件
- 30. 包括模板類型的頭文件
聽起來像一個很好的建議,但忽略了一點。 '#include'語句放在文件中。多個文件構成一個翻譯單元,按慣例一個.cpp文件和多個.h文件。由於問題是在哪裏放置'#include',特別是區分.cpp和.h文件,只是說「在TU中」實際上什麼也沒說。所有的C++代碼都在TU中,除此之外沒有別的。 – MSalters
@ MSalters:很好指出。現在更正。 –