У меня такая ситуация в File.h:
//File.h
#include "Info.h"#include "Constants.h"
В Info.h уже включен Constants.h
//Info.h
#include "Constants.h"
Но File.h напрямую использует вещи, которые были определены в Constants.h
Все защищено прагмой, поэтому файлы не будут включены дважды.
Должен ли я сохранить
//File.h
#include "Constants.h"
в File.h для удобства чтения, или удалите его, потому что он уже включен в Info.h?
Вам следует не полагаться на другой заголовок, включая то, что вам нужно, но явно включая заголовки, которые вам нужны.
В частности: попробуйте переместить включения в файлы cpp (не в заголовки), чтобы минимизировать перекомпиляцию единиц перевода после изменений.
Избегание включения вещей через цепочку других включений открывает путь для меньшего количества ошибок и проблем во время задач сопровождения и обслуживания кода.
Ссылки: многие коммерческие продукты согласуются с этой философией, в том числе LLVM.
Кроме этого, это зависит от вас.