Имаме приложение, в което кодът е организиран в няколко библиотеки, някои от които зависят от друга от тези библиотеки, така че имаме дърво на зависимости като
App
|
+--------+--------+
| | |
v v v
lib1 lib2 lib3
| |
v v
lib3 lib3
Наскоро някой добави нов метод в lib3, който зависи от клас, дефиниран в lib2, и тъй като това генерираше кръгови включвания, направихме предна декларация на необходимия клас в заглавния файл, присъстващ в lib3.
Сега всяка библиотека се компилира в статична библиотека и след това се свързва със съответно списъка за свързване, така че lib2 е в списъка за свързване на lib2, а също така lib3 е в списъка за харесване на lib2.
Това работи перфектно досега, но се чудех какви са недостатъците, свързани с този вид компилиране и зависимости на свързване. Мислех, че може да се случи промяна в lib2 да не бъде забелязана от lib3, освен ако не бъде прекомпилиран, но проверих и всяка промяна в който и да е заглавен файл в lib2 ще задейства повторно компилиране на lib3 (малко късмет тук).
Има ли друг важен недостатък, за който трябва да знам??
#include
изрази? И ако последното, сигурни ли сте, че всички тези#include
твърдения са наистина необходими? - person Beta   schedule 30.05.2016