LINUX.ORG.RU

История изменений

Исправление pavlick, (текущая версия) :

Сравните для того же проекта:

pavlick@pc ~/ud/test/z $ gcc -M child5.h 
child5.o: child5.h /usr/include/stdc-predef.h child3.h child1.h child4.h
Не отображена зависимость ни от base.h, ни от child2.h. А всё потому, что зависимость прослеживается через cpp файл в общей иерархии. Получив такой выхлоп, можно подумать, что base.h может заинклудить child5.h, в итоге будет перекрёст во время исполнения. Представьте, что в child5 мьютекс, он вызывает что-то из base, а тот перенаправляет обратно в child5, в итоге - блокировка. А в той иерархии, которую я построил, файл, находящийся на нижней ступени, не должен включать вышестоящий.

Исходная версия pavlick, :

Сравните для того же проекта:

pavlick@pc ~/ud/test/z $ gcc -M child5.h 
child5.o: child5.h /usr/include/stdc-predef.h child3.h child1.h child4.h
Не отображена зависимость ни от base.h, ни от child2.h. А всё потому, что зависимость прослеживается через cpp файл в общей иерархии. Получив такой выхлоп, можно подумать, что base.h может заинклудить child5.h, в итоге будет перекрёст во время исполнения. Представьте, что в child5 мьютекс, он вызывает что-то из base, а тот перенаправляет обратно в child5, в итоге - блокировка.