比方說,我有一個名爲foo.h
的頭文件,它包含另一個頭文件bar.h
。C++,我應該包括一些東西,如果我需要它*和*其他東西,它包括?
我也有一個名爲xyz.h
的頭文件。它需要foo.h
和bar.h
,雖然foo.h
和bar.h
無關彼此,所以我會覺得怪異只是包括foo.h
(仍然編譯,因爲它包括bar.h
...
所以,foo.h
包括bar.h
, bar.h
不包括foo.h
,但xyz.h
不包括foo.h
和bar.h
。這是不好的做法?是否有任何理由爲什麼我不應該?爲什麼我能做到這一點?
這是常見的做法。您並不總是知道標題包含的其他頭文件,因此您可以包含所有需要的頭文件。 [#include guards](https://en.wikipedia.org/wiki/Include_guard)可以防止問題,如果相同的標題包含兩次。 – Barmar
每個頭文件都應該包含所有頭文件,它需要忽略它們是否可能通過另一個頭文件被順帶包含(因爲這可能會改變)。 – Galik
通過搜索引擎查找「包含您使用的內容」。它應該提出http://include-what-you-use.org/和https://github.com/include-what-you-use/include-what-you-use和其他參考。 –