Nehmen wir an, ich habe eine Header-Datei namens foo.h
, und es enthält eine andere Kopfzeile, bar.h
.C++, Soll ich etwas einschließen, wenn ich es brauche * und * noch etwas anderes?
Ich habe auch eine Header-Datei namens xyz.h
. Es erfordert foo.h
und bar.h
, obwohl foo.h
und bar.h
nichts miteinander zu tun haben, so würde ich fühle mich seltsam nur umfassen foo.h
(was immer noch da es bar.h
...
So enthält kompiliert, foo.h
umfasst bar.h
, bar.h
nicht umfassen foo.h
, aber xyz.h
hat umfassen foo.h
und bar.h
. Ist die schlechte Praxis? gibt es einen Grund, warum soll ich nicht? Warum bin ich in der Lage, dies zu tun?
Es ist allgemein üblich. Sie wissen nicht immer, welche anderen Header-Dateien eine Header-Datei enthält, also fügen Sie alle benötigten Header-Dateien hinzu. [#include guards] (https://en.wikipedia.org/wiki/Include_guard) verhindert Probleme, wenn der gleiche Header zweimal enthalten ist. – Barmar
Jede Header-Datei sollte * alle * Header enthalten, die * es * ignorieren müssen, unabhängig davon, ob sie zufällig durch einen anderen Header eingefügt werden (weil sich das ändern kann). – Galik
Suchen Sie nach "Include What You Use" über eine Suchmaschine. Es sollte http://include-what-you-use.org/ und https://github.com/include-what-you-use/include-what-you-use und andere Referenzen aufzeigen. –