Skip to main content

Practice · 3 of 3

Header Dependency Closure

CHALLENGE
Difficulty: advanced+25 XP

Given the edge table already in your editor (struct dep { int obj; int header; }; deps[] mapping objects to the headers they include: main.o→util.h, util.o→util.h, main.o→main.h), implement int header_touch_breaks(size_t n_objects, const int *obj_uses_header, size_t n_uses) returning how many objects must rebuild when a header changes — obj_uses_header being a 0/1 per object. Then implement int stale_objects_possible(int rule_includes_header) returning 1 iff omitting a real header dependency can leave stale objects after an edit.

Back to lesson: Practice: Build Model Drills